IT外包帶你快速搭建Hadoop運(yùn)行環(huán)境
2020-04-24 17:41 作者:艾銻無限 瀏覽量:
IT外包帶你快速搭建Hadoop運(yùn)行環(huán)境
Hadoop 是一個分布式系統(tǒng)基礎(chǔ)架構(gòu),在大數(shù)據(jù)領(lǐng)域被廣泛的使用,它將大數(shù)據(jù)處理引擎盡可能的靠近存儲,Hadoop 最核心的設(shè)計就是 HDFS 和 MapReduce,HDFS 為海量的數(shù)據(jù)提供了存儲,MapReduce 為海量的數(shù)據(jù)提供了計算。這篇文章主要就是介紹一下如何搭建一個 Hadoop 運(yùn)行環(huán)境。
Hadoop 是一個
分布式系統(tǒng)基礎(chǔ)架構(gòu),在大數(shù)據(jù)領(lǐng)域被廣泛的使用,它將大數(shù)據(jù)處理引擎盡可能的靠近存儲,Hadoop 最核心的設(shè)計就是 HDFS 和 MapReduce,HDFS 為海量的數(shù)據(jù)提供了存儲,MapReduce 為海量的數(shù)據(jù)提供了計算。這篇文章主要就是介紹一下如何搭建一個 Hadoop 運(yùn)行環(huán)境。
我們使用 Linux 操作系統(tǒng)來搭建環(huán)境,下面的信息是用來準(zhǔn)備搭建 Hadoop 環(huán)境的電腦環(huán)境信息。
-
hadoop@ubuntu:~$ cat /etc/os-release
-
NAME="Ubuntu"
-
VERSION="14.04.5 LTS, Trusty Tahr"
-
ID=ubuntu
-
ID_LIKE=debian
-
PRETTY_NAME="Ubuntu 14.04.5 LTS"
-
VERSION_ID="14.04"
-
HOME_URL="http://www.ubuntu.com/"
-
SUPPORT_URL="http://help.ubuntu.com/"
-
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
緊接著來新建一個用戶,這一步其實(shí)也可以省略的,可以根據(jù)實(shí)際情況來決定,這里是新建了一個叫 hadoop 的新用戶。
-
#創(chuàng)建新用戶
-
sudo useradd -m hadoop -s /bin/bash
-
#設(shè)置密碼
-
sudo passwd hadoop
-
#為hadoop用戶增加管理員權(quán)限
-
sudo adduser hadoop sudo
-
#切換到hadoop用戶
-
su hadoop
我們首先來設(shè)置一下 SSH 無密碼登錄,這一步建議都設(shè)置一下,因?yàn)榉植际较到y(tǒng)環(huán)境都是由多臺服務(wù)器構(gòu)成的,設(shè)置免密碼登錄會方便使用。
-
#先檢查下是否可以在沒有密碼的情況下ssh到localhost
-
ssh localhost
-
#如果在沒有密碼的情況下無法ssh到localhost,請執(zhí)行以下命令
-
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
-
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
chmod 0600 ~/.ssh/authorized_keys
上面是一些準(zhǔn)備工作,接下來就正式開始部署 Hadoop 環(huán)境了。我們先在 Apache 官網(wǎng)(http://hadoop.apache.org)這里下載最新的穩(wěn)定版本的 Hadoop 發(fā)行版,然后解壓到指定目錄并進(jìn)入這個目錄,執(zhí)行 ./bin/hadoop 和 ./bin/hadoop version 可以分別顯示 hadoop 腳本的使用文檔和版本信息,然后修改一下 ./etc/hadoop/core-site.xml 和 ./etc/hadoop/hdfs-site.xml這兩個配置文件,配置修改分別如下所示。
修改 ./etc/hadoop/core-site.xml 配置文件,添加如下配置:
-
<configuration>
-
<property>
-
<name>fs.defaultFS</name>
-
<value>hdfs://localhost:9090</value>
-
</property>
-
<property>
-
<name>hadoop.tmp.dir</name>
-
<value>file:/opt/bigdata/hadoop/tmp</value>
-
<description>A base for other temporary directories.</description>
-
</property>
-
</configuration>
修改 ./etc/hadoop/hdfs-site.xml 配置文件,添加如下配置:
-
<configuration>
-
<property>
-
<name>dfs.replication</name>
-
<value>1</value>
-
</property>
-
<property>
-
<name>dfs.namenode.name.dir</name>
-
<value>file:/opt/bigdata/hadoop/tmp/dfs/name</value>
-
</property>
-
<property>
-
<name>dfs.datanode.data.dir</name>
-
<value>file:/opt/bigdata/hadoop/tmp/dfs/data</value>
-
</property>
-
</configuration>
配置修改好之后,執(zhí)行格式化文件系統(tǒng),操作如下。
-
hadoop@ubuntu:/opt/bigdata/hadoop$ ./bin/hdfs namenode -format
-
#執(zhí)行后輸出會比較多,看到下邊這條信息表示成功
-
INFO common.Storage: Storage directory /opt/bigdata/hadoop/tmp/dfs/name has been successfully formatted.
在格式化 NameNode 的時候可能會遇到下面這樣的兩個問題。
-
提示 Error: JAVA_HOME is not set and could not be found. 的錯誤,這說明 JAVA_HOME 環(huán)境變量沒有配置好,重新配置一下,或者修改 ./etc/hadoop/hadoop-env.sh 文件把 export JAVA_HOME=${JAVA_HOME} 直接修改成絕對目錄 export JAVA_HOME=/usr/lib/jvm/java-8 既可解決。
-
提示 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /opt/bigdata/hadoop/tmp/dfs/name/current 的錯誤,這是因?yàn)榕渲玫?/opt/bigdata/hadoop/tmp 目錄的寫入權(quán)限有問題,可以直接執(zhí)行 sudo chmod -R a+w /home/hadoop/tmp 即可解決。
接下來執(zhí)行 ./sbin/start-dfs.sh 來開啟 NameNode 和 DataNode 守護(hù)進(jìn)程,然后檢查 NameNode、DataNode 和 SecondaryNameNode 是否都已經(jīng)啟動成功,操作如下:
-
hadoop@ubuntu:/opt/bigdata/hadoop$ jps
-
4950 Jps
-
3622 SecondaryNameNode
-
3295 DataNode
-
2910 NameNode
啟動成功之后可以用瀏覽器來打開 http://localhost:50070/ 瀏覽 NameNode 的Web界面。
到此為止,Hadoop 單節(jié)點(diǎn)集群(偽分布式)環(huán)境搭建就已經(jīng)成功了, 接下來運(yùn)行一個 Hadoop 偽分布式實(shí)例。因?yàn)?Hadoop 單機(jī)模式是運(yùn)行的本地文件系統(tǒng),(偽)分布式模式則是運(yùn)行的 HDFS 上的數(shù)據(jù)。我們現(xiàn)在 HDFS 中創(chuàng)建用戶目錄,執(zhí)行目命令 ./bin/hdfs dfs -mkdir -p /user/hadoop 即可,執(zhí)行如下命令將輸入文件復(fù)制到分布式文件系統(tǒng)中。
-
#這個可以不執(zhí)行,因?yàn)闀詣觿?chuàng)建好目錄的
-
#./bin/hdfs dfs -mkdir input
-
./bin/hdfs dfs -put etc/hadoop input
-
#查看復(fù)制到HDFS的文件列表
-
./bin/hdfs dfs -ls input
接下來運(yùn)行一個 Hadoop 自帶的 mapreduce 實(shí)例看看效果吧,直接執(zhí)行如下命令。
-
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-
-
2.9.1.jar grep input output 'dfs[a-z.]+'
使用 ./bin/hdfs dfs -cat output/* 命令查看運(yùn)行后在 HDFS 上的輸出文件列表,或者使用下面的命令拷貝到本地查看。
-
./bin/hdfs dfs -get output output
-
./cat output/*
關(guān)閉 Hadoop 直接使用 ./sbin/stop-dfs.sh 命令即可。
這里介紹了 Hadoop 環(huán)境搭建的最基本最簡單的方法,我建議最好是邊看邊動手操作一下,這樣可以加深印象和理解,更加有利于掌握相關(guān)知識點(diǎn)。當(dāng)然,Hadoop 環(huán)境搭建還有其他一些方法,也是實(shí)際開發(fā)中常用的方法,比如基于 Yarn、Mesos 等資源調(diào)度系統(tǒng)搭建、使用 Docker 搭建等等,有興趣的朋友們可以嘗試一下這些方法,也歡迎留言交流。
以上文章由北京艾銻無限科技發(fā)展有限公司整理