1.環境準備
1.1 硬體配置
裝置名 | 引數 |
數量 | 6臺 |
系統 | centos6.5 |
記憶體 | 64G |
硬碟 | 32T/臺 |
CPU | 16核/臺 |
1.2 軟體版本
Hadoop-2.x 下載地址
JDK1.7 下載地址
至此搭建Hadoop叢集的條件準備OK了。
2.建立Hadoop使用者
在管理Hadoop叢集時,不推薦使用root使用者去操作,我們可以通知運維,叫他建立一個hadoop使用者去專門用於維護和管理叢集。
useradd hadoop passwd hadoop
同時通知運維給hadoop使用者開通sudo許可權。
hadoop ALL=(ALL:ALL) ALL
這樣建立完使用者後,我們接下來是在該使用者下安裝ssh,然各個伺服器之間能夠實現免密碼登入。
3.SSH安裝
a.首先在hadoop使用者下安裝ssh,保證伺服器之間能夠免密碼登入
b.關閉各個伺服器的內網防火牆,在外網由運維統一配置防火牆。
注:若不關閉防火牆,後面啟動叢集會由於許可權不足導致啟動失敗
安裝命令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
注:在hadoop使用者下,需要給authorized_keys賦予600的許可權,不然免密碼登陸無效
chmod 600 authorized_keys
這樣免密碼登入就算完成了。
注:每天伺服器安裝完ssh後,需登入一次ssh,不然know_hosts木有記錄,其他叢集啟動會出現can't be established
關閉防火牆:
chkconfig iptables off
這樣第三步就ok了。接下來是安裝JDK
4.安裝JDK
將下載的jdk包解壓到指定位置,然後配置環境變數即可:
sudo vi /etc/profile
JAVA_HOME=/usr/jdk1.7 CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
然後讓配置檔案立即生效:
. /etc/profile (或source /etc/profile)
驗證:
[hadoop@cloud001 portal]$ java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
5. 配置hadoop
將下載的hadoop-2.5.1安裝包解壓到指定的位置,然後配置etc目下的檔案和環境變數,首先我們先配置環境變數:
sudo vi /etc/profile
HADOOP_DEV_HOME=/home/hadoop/source/hadoop-2.5.1 HADOOP_MAPARED_HOME=${HADOOP_DEV_HOME} HADOOP_COMMON_HOME=${HADOOP_DEV_HOME} HADOOP_HDFS_HOME=${HADOOP_DEV_HOME} YARN_HOME=${HADOOP_DEV_HOME} HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar PATH=$JAVA_HOME/bin:$PATH:$HADOOP_DEV_HOME/bin:$HADOOP_DEV_HOME/sbin:$HIVE_HOME/bin:$HBASE_HOME/bin export JAVA_HOME CLASSPATH PATH HADOOP_DEV_HOME HADOOP_MAPARED_HOME HADOOP_COMMON_HOME HADOOP_HDFS_HOME YARN_HOME HADOOP_CONF_DIR HDFS_CONF_DIR YARN_CONF_DIR
(1)修改hadoop-env.sh的JAVA_HOME
export JAVA_HOME=/usr/jdk1.7
(2)配置hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///home/hadoop/hdfs/name</value> <final>true</final> </property> <property> <name>dfs.dataname.data.dir</name> <value>file:///home/hadoop/hdfs/data</value> <final>true</final> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>10.211.55.12:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
(3)配置core-site.xml
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://10.211.55.12:9000</value> </property> </configuration>
(4)配置mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>10.211.55.12:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>10.211.55.12:19888</value> </property> <property> <name>mapreduce.jobtracker.http.address</name> <value>10.211.55.12:50030</value> </property> <property> <name>mapreduce.jobtracker.address</name> <value>10.211.55.12:9001</value> </property> </configuration>
(5)配置yarn-env.sh
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.address</name> <value>10.211.55.12:18040</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>10.211.55.12:18030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>10.211.55.12:18088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>10.211.55.12:18025</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>10.211.55.12:18141</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>
(6)複製mapred-queues.xml檔案
cp mapred-queues.xml.template mapred-queues.xml
(7)設定master和slaver
master檔案:cloud001
slaver檔案:cloud002,cloud003,cloud004,cloud005,cloud006
(8)配置hosts
10.211.55.12 cloud001
10.211.55.15 cloud002
10.211.55.16 cloud003
10.211.55.19 cloud004
10.211.55.34 cloud005
10.211.55.22 cloud006
接著我們將配置好的資源打包分發到其他伺服器。
6.分發資源
使用scp命令將配置好的資源分發的其他伺服器上。
7.啟動叢集
到這裡所有的準備工作已完成了,我們可以啟動叢集了,這裡需要注意的是,hadoop2.x和hadoop1.x不一樣的地方是,啟動不著是start-all.sh,當然這個命令也是可以用的,但是這裡不推薦使用,在hadoop2.x中,官方對啟動命令做了優化,推薦使用start-dfs.sh和start-yarn.sh。下面我給出一個完整的啟動過程:
格式化節點(首次啟動):
hadoop namenode –format
啟動所有節點:
start-dfs.sh
啟動資源管理:
start-yarn.sh
注:在hadoop2.x中,由於hadoop的設計變了,相對hadoop1.x在HDFS上新增了一層yarn來管理,所以啟動之後所有的資源交由yarn來管理。
新增代理(負載均衡):
yarn-daemons.sh start proxyserver
檢視啟動叢集的簡要概括:
hadoop dfsadmin –report
最後我們可以輸入JPS命令來檢視:
[hadoop@cloud001 portal]$ jps 7844 ResourceManager 7501 NameNode 7687 SecondaryNameNode 15251 Jps
到這裡我們的社群版hadoop2.x叢集就搭建完成了。