本文以三台機器組成的一個Hadoop叢集的安裝與配置為例。
三台機器的資訊如下:
hostname 角色 IP
dc01 mast 192.168.68.57
dc02 slave 192.168.68.58
dc03 slave 192.168.68.59
使用者名稱均為root。
1:安裝JDK1.6並配置好java環境,參考:
CentOS6 安裝Tomcat7 中的安裝jdk部分
2:配置centos的SSH無密碼登入:
ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
測試是否配置成功:
ssh localhost
第一次運行會提示你是否串連,輸入yes斷行符號即可。
修改機器名(以dc01為例,其他兩台機器方法相同):
vi /etc/sysconfig/network-scripts/ifcfg-eth0
增加一行:
HOSTNAME=dc01
儲存
vi /etc/sysconfig/network
HOSTNAME修改為dc01
儲存
vi /etc/hosts
增加以下資訊:
192.168.68.57 dc01
192.168.68.58 dc02
192.168.68.59 dc03
儲存
至此,hostname修改完畢。重啟機器使得hostname生效。
配置dc01無密碼登入dc02、dc03:
在dc01中
scp ./.ssh/authorized_keys dc02:~/.ssh/
scp ./.ssh/authorized_keys dc03:~/.ssh/
測試無密碼登入配置是否成功:
ssh dc02
ssh dc03
下載hadoop,這裡使用的是hadoop-1.0.3
tar -xzvf hadoop-1.0.3.tar.gz
mv hadoop-1.0.3 /usr/local/hadoop
3. 配置Hadoop:
echo $JAVA_HOME
把JAVA_HOME 的值拷貝一下,
修改hadoop-env.sh
vi /usr/local/hadoop/conf/hadoop-env.sh
找到:
# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
在下面添加一行:
export JAVA_HOME=/usr/java/jdk1.6.0_37
#將hbase中的jar包加入到hadoop的classpath中去:
#設定hbase的安裝目錄:
export HBASE_HOME=/usr/local/hbase
# Extra Java CLASSPATH elements. Optional.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase-0.94.1.jar:$HBASE_HOME/hbase-0.94.1-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-3.4.3.jar:${HBASE_HOME}/lib/protobuf-java-2.4.0a.jar:${HBASE_HOME}/lib/*
儲存
修改core-site.xml
vi /usr/local/hadoop/conf/core-site.xml
將檔案改為如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://dc01:9000</value>
</property>
</configuration>
儲存
修改mapred-site.xml
vi /usr/local/hadoop/conf/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>dc01:9001</value>
</property>
</configuration>
儲存
修改masters
vi /usr/local/hadoop/conf/masters
改為:
dc01
儲存
修改slaves
vi /usr/local/hadoop/conf/slaves
改為:
dc02
dc03
儲存
修改HDFS
vim hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/opt/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hdfs/data</value>
<final>true</final>
</property>
</configuration>
至此,dc01已經配置完畢,將dc01的hadoop的設定檔拷貝到其他兩台機器:
scp /usr/local/hadoop/conf/* dc02:/usr/local/hadoop/conf/
scp /usr/local/hadoop/conf/* dc03:/usr/local/hadoop/conf/
至此整個Hadoop叢集配置完畢,下面來啟動Hadoop。
4. 啟動Hadoop:
cd /usr/local/hadoop/bin/
./hadoop namenode -format
./start-all.sh
關閉系統防火牆(最好直接停止防火牆服務,或者可以增加允許通過的連接埠,具體連接埠我還沒來得及尋找)
service iptables stop
添加防火牆規則,允許通過網頁查看hadoop叢集的狀態.
vi /etc/sysconfig/iptables
增加下面兩行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50030 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50070 -j ACCEPT
儲存。
重啟iptables服務:
service iptables restart
通過瀏覽器輸入下面地址查看叢集的狀態:
http://192.168.68.57:50070
通過瀏覽器輸入下面地址查看Map/Reduce狀態:
http://192.168.68.57:50030
我的開啟後是正在初始化,一直是這樣,不知道是什麼原因(已解決,關掉防火牆即可)。
成功後:
未完待續