已經有新版本的安裝練習了可以參考新的
Hadoop2.6偽分佈式安裝
0.準備軟體&環境
CentOS-6.5-i386-bin-DVD1.iso
jdk-6u45-linux-i586.bin
hadoop-2.2.0.tar.gz
虛擬機四台,如下
電腦名稱 | IP | 執行的服務 |
---|---|---|
master | 192.168.200.101 | NameNode、SecondaryNameNode、ResourceManager |
slave1 | 192.168.200.102 | DataNode、NodeManager |
slave2 | 192.168.200.103 | DataNode、NodeManager |
slave3 | 192.168.200.104 | DataNode、NodeManager |
因為裝在64位元系統上會有要不要重新編譯的問題,所以這邊僅用32位元安裝
參考來源
1.安裝OS
安裝OS的時候選擇Minimal安裝,記得順便設定網路,沒設定的話等安裝完成先設定網路
這階段使用 root 執行
1.1快速啟用網路介面(重開機後消失)
ifconfig eth0 192.168.200.101 netmask 255.255.255.0
route add default gw 192.168.200.2
echo "nameserver 168.95.1.1" > /etc/resolv.conf
1.2編輯網路設定
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:90:F5:98
TYPE=Ethernet
UUID=df3daad9-8aa3-4266-9875-7caac513d7bd
#ONBOOT由no改成yes
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO由dhcp改成none
BOOTPROTO=none
#以下為新增的
IPADDR=192.168.200.105
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=168.95.1.1
IPV6INIT=no
存檔後重啟動網路介面
service network restart
1.3更新系統及安裝
#更新所有套件
yum -y update
#加裝以下套件之後要用
yum -y install wget openssh-clients
1.4群組及用戶
#建立群組
groupadd hadoop
#新增用戶
adduser hduser
#設定用戶密碼
passwd hduser
#將使用者加入群組
usermod -g hadoop hduser
1.5 增加hduser可執行sudo權限
visudo
#root ALL=(ALL) ALL 在此行之下增加
hduser ALL=(ALL) ALL
1.6關閉SELINUX
#立即生效
setenforce 0
#永久性修改要重啟
vi /etc/selinux/config
#由enforcing改成disabled
SELINUX=disabled
1.7關閉防火牆
即時生效,重啟後復原
#開啟
service iptables start
#關閉
service iptables stop
永久性生效,重啟後不會復原
#開啟
chkconfig iptables on
#關閉
chkconfig iptables off
1.8關閉SSH登入確認詢問
vi /etc/ssh/ssh_config
#找到StrictHostKeyChecking這行,將註解移除,並改為no
StrictHostKeyChecking no
#存檔後跳出並重啟SSH服務使其生效
service sshd restart
1.9增加主機名稱IP對照表
cat >> /etc/hosts << EOF
192.168.200.101 master
192.168.200.102 slave1
192.168.200.103 slave2
192.168.200.104 slave3
EOF
2安裝JDK
這階段還是使用 root 執行
2.1先移除舊版或是openJDK
最小安裝應該是沒有自帶,但是紀錄一下怎麼移除
rpm -qa | grep java
yum -y remove java-*
2.2下載安裝Oracle JDK
cd /usr
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" "http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin"
mv jdk-6u45-linux-i586.bin* jdk-6u45-linux-i586.bin
chmod 777 jdk-6u45-linux-i586.bin
./jdk-6u45-linux-i586.bin
mv jdk1.6.0_45 java
JDK的下載要特別處理可見說明使用wget下載JDK
編輯全域環境變數
vi /etc/profile
#貼上以下內容
export JAVA_HOME=/usr/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin
#存檔後跳出並使設定立即生效
source /etc/profile
#確認安裝結果
java -version
3安裝HADOOP
3.1先重開機並使用 hduser 登入
reboot
3.2本機SSH免密碼設定
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh localhost
exit
3.3安裝HADOOP
cd /opt
sudo wget http://ftp.mirror.tw/pub/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
sudo tar -xvzf hadoop-2.2.0.tar.gz
sudo mv hadoop-2.2.0 hadoop
sudo chown -R hduser:hadoop /opt/hadoop
編輯用戶環境參數
vi ~/.bashrc
#貼上以下內容
export HADOOP_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#存檔後使配置立即生效
source ~/.bashrc
#驗證可否呼叫hadoop指令
hadoop version
設定hadoop環境變數
#增加環境變數
cat >> /opt/hadoop/libexec/hadoop-config.sh << EOF
export JAVA_HOME=/usr/java
EOF
#增加環境變數
cat >> /opt/hadoop/etc/hadoop/hadoop-env.sh << EOF
export JAVA_HOME=/usr/java
EOF
建立本機暫存資料夾
mkdir -p $HADOOP_HOME/tmp
在Master上編輯slaves的名稱(使用cat覆蓋)
cat > /opt/hadoop/etc/hadoop/slaves << EOF
slave1
slave2
slave3
EOF
覆蓋core-site.xml
cat > /opt/hadoop/etc/hadoop/core-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
EOF
覆蓋hdfs-site.xml
cat > /opt/hadoop/etc/hadoop/hdfs-site.xml << EOF
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
EOF
覆蓋mapred-site.xml
cat > /opt/hadoop/etc/hadoop/mapred-site.xml << EOF
<?xml version="1.0"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
EOF
編輯yarn-site.xml
因為有一些環境變數所以要用vi
vi /opt/hadoop/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>${hadoop.tmp.dir}/nodemanager/local</value>
</property>
<property>
<name>yarn.nodemanager.address</name>
<value>0.0.0.0:8034</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>${hadoop.tmp.dir}/nodemanager/remote</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>${hadoop.tmp.dir}/nodemanager/logs</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
以上安裝完成第一台後,安裝slave的時候可以用scp複製安裝檔過去比較快
使用 root 身份
scp /usr/jdk-6u45-linux-i586.bin slave1:/usr
scp -rp /opt/hadoop slave1:/opt
ssh slave1 "chown -R hduser:hadoop /opt/hadoop"
把master的ssh公鑰複製到每一台slave上
ssh-copy-id -i ~/.ssh/id_rsa.pub hduser@slave1
ssh slave1
exit
都安裝完成後在Master執行格式化
hadoop namenode -format
格式化結果
DFS啟動&關閉(在master上下指令就好)
#啟動
/opt/hadoop/sbin/start-dfs.sh
#關閉
/opt/hadoop/sbin/stop-dfs.sh
#檢查起來的服務
jps
啟動dfs結果
在master上的jps
在slave上的jps
YARN啟動&關閉(在master上下指令就好)
#啟動
/opt/hadoop/sbin/start-yarn.sh
#關閉
/opt/hadoop/sbin/stop-yarn.sh
#檢查起來的服務
jps
啟動yarn
在master上的jps
在slave上的jps
HDFS Web UI: http://master:50070
YARN Web UI: http://master:8088
4 測試
cd ~/
mkdir in
cat > in/file << EOF
This is one line
This is another one
EOF
#新指令?先不要用
#hadoop dfs -copyFromLocal in /in
hadoop fs -mkdir /in
hadoop fs -put in/file /in
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /in /out
hadoop fs -cat /out/part-r-00000
使用指令檢視結果
可以在網頁上看到執行結果以及檔案存在那些節點
研究參考
http://solaimurugan.blogspot.tw/2013/11/setup-multi-node-hadoop-20-cluster.html
http://blog.yidooo.net/archives/hadoop-2-2-0-installation-and-configuration.html
http://shiyanjun.cn/archives/561.html