最近閒來無事搭建了一個hadoop環境,將搭建步驟記錄一下。
一.環境準備
環境:VMware,xshell
OS: Ubuntu server(選擇最簡安裝,只安裝OpenSSH-Server)
版本:hadoop-2.6.0
三個節點:
192.168.16.131 master
192.168.16.132 node1
192.168.16.133 node2
- 編輯/etc/hosts文件
將節點信息添加進去(如上)
- 建立hadoop運行賬號:
groupadd hadoop //設置hadoop用戶組
useradd –s /bin/bash –d /home/wh –m wh –g hadoop –G admin //添加一個wh用戶,此用戶屬於hadoop用戶組,且具有admin權限。
passwd wh //設置用戶zhm登錄密碼
su wh //切換到wh用戶中
- 設置權限修改sudoers
chmod u+w /etc/sudoers
vim /etc/sudoers (添加如下東西)
wh ALL=(ALL:ALL) ALL
chmod u-w /etc/sudoers
`二.安裝jdk(選擇7)
1.安裝
apt-get install openjdk-7-jdk
2.環境配置
- 編輯 .bashrc
vim .bashrc
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64(默認安裝位置)
- 添加/etc/profile
chmod u+w /etc/profile(給予修改權限)
vim /etc/profile
#末尾添加以下配置:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
chmod u-w /etc/profile(權限回收)
- 查看是否安裝成功
java -version
三.SSH無密碼登錄
1.生成master公匙
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cd .ssh
2.讓 節點需能無密碼 SSH 本機,在 節點上執行:
cat id_rsa.pub >> authorized_keys
3.使用ssh localhost檢查是否能登錄自身(三個都用)
4.使用master節點ssh另外兩個節點
在node1,node2節點執行:
scp wh@master:~/.ssh/id_dsa.pub ./master_dsa.pub
cat master_dsa.pub >> authorized_keys
5.測試是否成功
- 在master節點
ssh node1(node2)
注意:第一次需要輸入node1(node2)節點密碼,第二次不用。
四.配置hadoop-2.6.0
下載hadoop-2.6.0:http://pan.baidu.com/s/1c24XcEs
通過Xftp將文件從windows傳入Ubuntu 解壓到/home/wh下
修改core-site.xml(都在/home/wh/hadoop/etc/hadoop/下):
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/wh/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
- 修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/wh/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/wh/hadoop/tmp/dfs/data</value>
</property>
</configuration>
- 修改mapred-site.xml(cp mapred-site.xml.template mapred-site.xml)
<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>
- 修改slaves(刪除localhost)
node1
node2
- 修改hadoop-env.sh
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
- 將hadoop文件複製到各個節點,並在slaves節點執行解壓操作:
tar -zcf ~/hadoop.master.tar.gz ./hadoop
scp ./hadoop.master.tar.gz node1:/home/wh
sudo tar -zxf ~/hadoop.master.tar.gz -C /home/wh
- 啓動hadoop(首次啓動需要master執行namenode的格式化):
bin/hdfs namenode -format
- 啓動hadoop:
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver
- 通過命令 jps 可以查看各個節點所啓動的進程。正確的話,在 Master 節點上可以看到
NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進程在 Slave
節點可以看到 DataNode 和 NodeManager 進程.
五.運行hadoop實例
- 首先創建 HDFS 上的用戶目錄:
bin/hdfs dfs -mkdir -p /user/wh
- 將 /usr/local/hadoop/etc/hadoop 中的配置文件作爲輸入文件複製到分佈式文件系統中:
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put /home/wh/hadoop/etc/hadoop/*.xml input
- 運行mapreduce作業:
hadoop jar /home/wh/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
- 通過http://192.168.16.131:8088查看datanode狀態或者通過bin/hdfs dfs -cat output/*查看輸出結果
六.關閉hadoop
sbin/stop-yarn.sh
sbin/stop-hdfs.sh
sbin/mr-jobhistory-daemon.sh stop historyserver