系統(tǒng):ubuntu 16.04、Apache hadoop2.7.3
教程適用于hadoop2.0以上的系統(tǒng)
教程使用兩個(gè)節(jié)點(diǎn)作為集群環(huán)境: 一個(gè)作為 Master 節(jié)點(diǎn),局域網(wǎng) IP 為 192.168.1.100;另一個(gè)作為 Slave 節(jié)點(diǎn),局域網(wǎng) IP 為 192.168.1.101。
hadoop安裝對于熟悉linux系統(tǒng)的人來說難度系數(shù)會(huì)大大的降低,教程比較適合不懂linux的新手。
安裝流程
- 安裝linux ubuntu系統(tǒng)(我安裝了linux桌面)
- 創(chuàng)建hadoop用戶
- 更新apt
- 安裝vim或者gedit
- 配置hosts和hostname
- 安裝SSH、配置SSH無密碼登錄
- 安裝java 環(huán)境
- 安裝hadoop2
- 配置hadoop2集群/分布式環(huán)境
- hadoop2異常說明
安裝linux ubuntu系統(tǒng)
ubuntu桌面版下載地址(linux新手推薦用桌面版比較容易上手)
http://www.ubuntu.com/download/desktop/
LTS表示 Long Term Support ,長期支持,linux建議安裝LTS的
具體安裝教程如下(這個(gè)教程感覺講的很詳細(xì))
http://www.jb51.net/os/windows/298507.html
創(chuàng)建hadoop用戶
這一步可以省略,如果你的linux系統(tǒng)已經(jīng)有了別的用戶
linux命令
sudo useradd -m hadoop -s /bin/bash #這條命令創(chuàng)建了可以登陸的 hadoop 用戶,并使用 /bin/bash 作為 shell
sudo passwd hadoop #設(shè)置密碼,按提示輸入兩次密碼
sudo adduser hadoop sudo #為 hadoop 用戶增加管理員權(quán)限,方便部署,避免一些對新手來說比較棘手的權(quán)限問題
最后注銷當(dāng)前用戶(點(diǎn)擊屏幕右上角的齒輪,選擇注銷),在登陸界面使用剛創(chuàng)建的 hadoop 用戶進(jìn)行登陸
更新apt
linux命令
sudo apt-get update #更新apt
安裝vim或者gedit
新手推薦安裝gedit,比較符合windows操作習(xí)慣
安裝命令
sudo apt-get install vim #安裝vim
sudo apt-get install gedit #安裝gedit
后續(xù)需要更改一些配置文件,會(huì)用到vim或者gedit,請根據(jù)個(gè)人喜歡自行使用
配置hosts和hostname
配置以后方便管理,同時(shí)可以使用主機(jī)名來訪問局域網(wǎng)里的其它主機(jī)
sudo vim /etc/hosts #配置hosts
例如本教程使用兩個(gè)節(jié)點(diǎn)的名稱與對應(yīng)的 IP 關(guān)系如下:
192.168.1.100 Master
192.168.1.101 Slave1
sudo vim /etc/hostname #配置hostname
例如本教程將192.168.1.100的主機(jī)名改成Master,將192。168.1.101改成Salve1
此時(shí)應(yīng)該重啟下系統(tǒng)
安裝SSH配置SSH無密碼登錄
集群、單節(jié)點(diǎn)模式都需要用到 SSH 登陸(master),Ubuntu 默認(rèn)已安裝了 SSH client,此外還需要安裝 SSH server
sudo apt-get install openssh-server #安裝SSH server
ssh localhost #使用命令登錄本機(jī),此時(shí)會(huì)有SSH首次登陸提示,輸入 yes 。然后按提示輸入密碼,這樣就登陸到本機(jī)了,然后輸入【exit】退出
配置SSH無密碼登錄
利用 ssh-keygen 生成密鑰
cd ~/.ssh/ #若沒有該目錄,請先執(zhí)行一次ssh localhost
ssh-keygen -t rsa #會(huì)有提示,都按回車就可以,最后可以輸入ls命令查看目錄下的文件
讓 Master 節(jié)點(diǎn)需能無密碼 SSH 本機(jī),在 Master 節(jié)點(diǎn)上執(zhí)行:
cat ./id_rsa.pub >> ./authorized_keys #完成后可執(zhí)行 ssh Master,就可以無密碼登錄到本地,驗(yàn)證以后記得輸入exit,返回原來終端
在Master 節(jié)點(diǎn)上將公匙id_rsa.pub傳輸?shù)?Slave1 節(jié)點(diǎn):
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ #這里將公鑰放在了Slave1節(jié)點(diǎn)/home/hadoop/目錄下,scp 是 secure copy 的簡寫,用于在 Linux 下進(jìn)行遠(yuǎn)程拷貝文件,類似于 cp 命令,不過 cp 只能在本機(jī)中拷貝。
在 Slave1 節(jié)點(diǎn)上,將 ssh 公匙加入授權(quán):
mkdir ~/.ssh # 如果不存在該文件夾需先創(chuàng)建,若已存在則忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以刪掉了
最好可以在Master節(jié)點(diǎn)通過ssh Slave1命令來測試下是否可以無密碼登錄到Salve1節(jié)點(diǎn)上
安裝java環(huán)境
下載oracle JDK,可以通過https://wiki.apache.org/hadoop/HadoopJavaVersions 查看要hadoop支持哪些版本JDK
安裝
sudo tar -zxf {jdk存放的目錄}/jdk-xxx.linux.tar.gz -C /usr/local # 解壓到/usr/local中
配置Javahome
sudo gedit /etc/profile #打開配置文件
在打開的文件末尾加入如下變量,然后保存
export JAVA_HOME={jdk安裝目錄} #例如/usr/local/java/jdk1.8.0_111
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
校驗(yàn)是否配置成功
echo $JAVA_HOME # 檢驗(yàn)變量值
java -version
$JAVA_HOME/bin/java -version # 與直接執(zhí)行 java -version 一樣

安裝hadoop2
我們將hadoop2安裝在Master主機(jī)上面,一切配置好之后,把hadoop2直接復(fù)制到Slave1主機(jī)上面即可
下面的操作都是在Master主機(jī)上進(jìn)行的
下載hadoop2
Hadoop2可以通過http://mirror.bit.edu.cn/apache/hadoop/common/ 或者 http://mirrors.cnnic.cn/apache/hadoop/common/ 下載,一般選擇下載最新的穩(wěn)定版本,即下載 “stable” 下的 hadoop-2.x.y.tar.gz 這個(gè)格式的文件,這是編譯好的,另一個(gè)包含 src 的則是 Hadoop 源代碼,需要進(jìn)行編譯才可使用。

安裝hadoop2
sudo tar -zxf {hadoop下載路徑}/hadoop-2.7.3.tar.gz -C /usr/local # 解壓到/usr/local中
cd /usr/local/
sudo mv ./hadoop-2.7.3/ ./hadoop # 將文件夾名改為hadoop
sudo chown -R hadoop ./hadoop # 修改文件權(quán)限
校驗(yàn)hadoop2是否安裝成功
cd /usr/local/hadoop
./bin/hadoop version

配置hadoop環(huán)境變量
將 Hadoop 安裝目錄加入 PATH 變量中,這樣就可以在任意目錄中直接使用 hadoo、hdfs 等命令了。首先執(zhí)行 sudo gedit /etc/profile
修改PATH,在PATH末尾加入:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
加上之前配置的java環(huán)境,最好的PATH如下
export PATH=$PATH:$JAVA_HOME/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
配置hadoop2集群/分布式環(huán)境,在Master主機(jī)上進(jìn)行配置
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個(gè)配置文件,更多設(shè)置項(xiàng)可點(diǎn)擊查看官方說明,這里僅設(shè)置了正常啟動(dòng)所必須的設(shè)置項(xiàng): slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
官方文檔地址【2.7.3doc】:http://hadoop.apache.org/docs/r2.7.3/
- 文件 slaves,將作為 DataNode 的主機(jī)名寫入該文件,每行一個(gè),默認(rèn)為 localhost,所以在偽分布式配置時(shí),節(jié)點(diǎn)即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉,讓 Master 節(jié)點(diǎn)僅作為 NameNode 使用。
- core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
- 文件 hdfs-site.xml,dfs.replication 一般設(shè)為 3表示有3個(gè)Slave節(jié)點(diǎn),但我們只有一個(gè) Slave 節(jié)點(diǎn),所以 dfs.replication 的值設(shè)為 1:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
- 文件 mapred-site.xml (hadoop2.7.3需要先重命名,默認(rèn)文件名為 mapred-site.xml.template),然后配置修改如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
</configuration>
- yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
將配置好的hadoop2從Master主機(jī)復(fù)制到其它Slave主機(jī)
Master節(jié)點(diǎn)的hadoop配置好以后,將/usr/local/hadoop文件夾復(fù)制到各個(gè)Slave節(jié)點(diǎn)。
在Master節(jié)點(diǎn)執(zhí)行
cd /usr/local
tar -zcf ~/hadoop.master.tar.gz ./hadoop #將hadoop文件夾壓縮到/home/hadoop/目錄下
cd ~
scp ./hadoop.master.tar.gz Slave1:/home/hadoop #將hadoop.master.tar.gz從Master主機(jī)復(fù)制到Salve1主機(jī)/home/hadoop目錄下
在Salve節(jié)點(diǎn)執(zhí)行
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local #解壓安裝
sudo chown -R hadoop /usr/local/hadoop #給hadoop目錄賦予讀寫權(quán)限
格式化NameNode
首次啟動(dòng)需要先在 Master 節(jié)點(diǎn)執(zhí)行 NameNode 的格式化:
hdfs namenode -format # 首次運(yùn)行需要執(zhí)行初始化,之后不需要
啟動(dòng)hadoop2
在Master節(jié)點(diǎn)執(zhí)行如下操作
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
通過命令jps可以查看各個(gè)節(jié)點(diǎn)所啟動(dòng)的進(jìn)程。正確的話,在 Master 節(jié)點(diǎn)上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進(jìn)程,在 Slave 節(jié)點(diǎn)可以看到 DataNode 和 NodeManager 進(jìn)程。缺少任一進(jìn)程都表示出錯(cuò)。我們通過瀏覽器打開網(wǎng)址:http://master:50070/查看datanode和namenode的狀態(tài),如果有異常通過查看集群log文件來排查異常。
hadoop2異常說明