系統(tǒng):ubuntu 16.04缤底、Apache hadoop2.7.3
教程適用于hadoop2.0以上的系統(tǒng)
教程使用兩個節(jié)點作為集群環(huán)境: 一個作為 Master 節(jié)點,局域網(wǎng) IP 為 192.168.1.100;另一個作為 Slave 節(jié)點渺尘,局域網(wǎng) IP 為 192.168.1.101。
hadoop安裝對于熟悉linux系統(tǒng)的人來說難度系數(shù)會大大的降低,教程比較適合不懂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的
具體安裝教程如下(這個教程感覺講的很詳細)
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)前用戶(點擊屏幕右上角的齒輪唠梨,選擇注銷),在登陸界面使用剛創(chuàng)建的 hadoop 用戶進行登陸
更新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ù)需要更改一些配置文件姻成,會用到vim或者gedit插龄,請根據(jù)個人喜歡自行使用
配置hosts和hostname
配置以后方便管理,同時可以使用主機名來訪問局域網(wǎng)里的其它主機
sudo vim /etc/hosts #配置hosts
例如本教程使用兩個節(jié)點的名稱與對應(yīng)的 IP 關(guān)系如下:
192.168.1.100 Master
192.168.1.101 Slave1
sudo vim /etc/hostname #配置hostname
例如本教程將192.168.1.100的主機名改成Master科展,將192均牢。168.1.101改成Salve1
此時應(yīng)該重啟下系統(tǒng)
安裝SSH配置SSH無密碼登錄
集群、單節(jié)點模式都需要用到 SSH 登陸(master)才睹,Ubuntu 默認已安裝了 SSH client徘跪,此外還需要安裝 SSH server
sudo apt-get install openssh-server #安裝SSH server
ssh localhost #使用命令登錄本機,此時會有SSH首次登陸提示琅攘,輸入 yes 垮庐。然后按提示輸入密碼,這樣就登陸到本機了坞琴,然后輸入【exit】退出
配置SSH無密碼登錄
利用 ssh-keygen 生成密鑰
cd ~/.ssh/ #若沒有該目錄哨查,請先執(zhí)行一次ssh localhost
ssh-keygen -t rsa #會有提示,都按回車就可以剧辐,最后可以輸入ls命令查看目錄下的文件
讓 Master 節(jié)點需能無密碼 SSH 本機寒亥,在 Master 節(jié)點上執(zhí)行:
cat ./id_rsa.pub >> ./authorized_keys #完成后可執(zhí)行 ssh Master,就可以無密碼登錄到本地荧关,驗證以后記得輸入exit溉奕,返回原來終端
在Master 節(jié)點上將公匙id_rsa.pub傳輸?shù)?Slave1 節(jié)點:
scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/ #這里將公鑰放在了Slave1節(jié)點/home/hadoop/目錄下,scp 是 secure copy 的簡寫忍啤,用于在 Linux 下進行遠程拷貝文件加勤,類似于 cp 命令,不過 cp 只能在本機中拷貝同波。
在 Slave1 節(jié)點上鳄梅,將 ssh 公匙加入授權(quán):
mkdir ~/.ssh # 如果不存在該文件夾需先創(chuàng)建,若已存在則忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以刪掉了
最好可以在Master節(jié)點通過ssh Slave1命令來測試下是否可以無密碼登錄到Salve1節(jié)點上
安裝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
校驗是否配置成功
echo $JAVA_HOME # 檢驗變量值
java -version
$JAVA_HOME/bin/java -version # 與直接執(zhí)行 java -version 一樣
安裝hadoop2
我們將hadoop2安裝在Master主機上面讹挎,一切配置好之后校赤,把hadoop2直接復(fù)制到Slave1主機上面即可
下面的操作都是在Master主機上進行的
下載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 這個格式的文件马篮,這是編譯好的,另一個包含 src 的則是 Hadoop 源代碼怜奖,需要進行編譯才可使用浑测。
安裝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)限
校驗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主機上進行配置
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個配置文件讹语,更多設(shè)置項可點擊查看官方說明,這里僅設(shè)置了正常啟動所必須的設(shè)置項: 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 的主機名寫入該文件,每行一個贡定,默認為 localhost赋访,所以在偽分布式配置時,節(jié)點即作為 NameNode 也作為 DataNode厕氨。分布式配置可以保留 localhost进每,也可以刪掉,讓 Master 節(jié)點僅作為 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個Slave節(jié)點嘱兼,但我們只有一個 Slave 節(jié)點国葬,所以 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需要先重命名,默認文件名為 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主機復(fù)制到其它Slave主機
Master節(jié)點的hadoop配置好以后汇四,將/usr/local/hadoop文件夾復(fù)制到各個Slave節(jié)點。
在Master節(jié)點執(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主機復(fù)制到Salve1主機/home/hadoop目錄下
在Salve節(jié)點執(zhí)行
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local #解壓安裝
sudo chown -R hadoop /usr/local/hadoop #給hadoop目錄賦予讀寫權(quán)限
格式化NameNode
首次啟動需要先在 Master 節(jié)點執(zhí)行 NameNode 的格式化:
hdfs namenode -format # 首次運行需要執(zhí)行初始化踢涌,之后不需要
啟動hadoop2
在Master節(jié)點執(zhí)行如下操作
start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
通過命令jps可以查看各個節(jié)點所啟動的進程通孽。正確的話,在 Master 節(jié)點上可以看到 NameNode睁壁、ResourceManager背苦、SecondrryNameNode、JobHistoryServer 進程潘明,在 Slave 節(jié)點可以看到 DataNode 和 NodeManager 進程行剂。缺少任一進程都表示出錯。我們通過瀏覽器打開網(wǎng)址:http://master:50070/查看datanode和namenode的狀態(tài)钳降,如果有異常通過查看集群log文件來排查異常厚宰。
hadoop2異常說明