- 安裝環境
操作系統:CentOS 6.5 i586(32位)
java環境:JDK 1.7.0.51
hadoop版本:社區版本2.2.0,hadoop-2.2.0.tar.gz - 安裝准備
設置集群的hosts,切換到root用戶下,用vi編輯器修改/etc/hosts配置文件:vi /etc/hosts 10.1.5.125 master 10.1.5.126 slave1 10.1.5.127 slave2 127.0.0.1 localhost
配置集群各個節點之間的ssh無密碼互信,也就是從master開始,ssh到master、slave1和slave2上都不需要密碼,反向ssh到master則不必設置。互信設置需要在hadoop2用戶下執行命令如下:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/ scp ~/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/
這樣就將生成的授權秘鑰拷貝到了slave1和slave2的/home/hadoop2/.ssh目錄下,還需要執行非常重要的一步才能實現無密碼互信,修改權限:
chmod 600 ~/.ssh/authorized_keys
該步驟必須在master、slave1和slave2上分別執行。
- hadoop安裝
將hadoop-2.2.0.tar.gz拷貝到hadoop2用戶的工作目錄/home/hadoop2,執行解壓命令,並修改文件夾名稱為hadoop2:tar -zxvf hadoop-2.2.0.tar.gz mv hadoop-2.2.0 hadoop2
先配置hadoop2的環境變量,修改~/.bash_profile(JAVA_HOME、PATH和CLASSPATH已經在root用戶下設置在/etc/profile文件中):
vi .bash_profile export HADOOP_HOME=$HOME/hadoop2 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 HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HADOOP_LOG_DIR=${HADOOP_HOME}/logs export HADOOP_PID_DIR=/var/hadoop/pids 執行source命令,立即生效: source .bash_profile
進入hadoop2的配置文件夾~/hadoop2/etc/hadoop/目錄下,修改配置各個文件,
core-site.xml:vi core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop2/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration>
hdfs-site.xml:
vi hdfs-site.xml <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop2/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///home/hadoop2/dfs/data,/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration>
hadoop-env.sh(本機的安裝路徑為/opt/jdk1.7):
vi hadoop-env.sh export JAVA_HOME=${JAVA_HOME}
yarn-site.xml:
vi yarn-site.xml <configuration> <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> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
mapred-site.xml:
vi 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>
slaves:
vi slaves master slave1 slave2
此設置中,將master也作為一個datanode節點來使用,只有在集群機器數量不足的情況下才會如此設置。
這樣就設置完成了,然后將/home/hadoop2/hadoop2目錄,整個拷貝到slave1和slave2的hadoop2的工作目錄下,就算完成了安裝:scp -r /home/hadoop2/hadoop2 slave1:/home/hadoop2 scp -r /home/hadoop2/hadoop2 slave2:/home/hadoop2
-
啟動集群
執行hadoop2的sbin目錄下的啟動腳本:sbin/start-dfs.sh (此命令啟動了namenode、secondaryNamenode以及datanode) sbin/start-yarn.sh (此命令啟動了ResourceManager和NodeManager,相當於hadoop1中的jobtracker和TaskTracker)
然后用jps命令來查看運行的java進程,如果下列進程都存在,則說明集群正常啟動:
NameNode SecondaryNameNode ResourceManager NodeManager DataNode
至此,hadoop 2.2.0集群安裝完畢。
-
注意事項
需要注意的一點是:hadoop集群的進程pid文件默認保存在linux的/tmp目錄下,而/tmp目錄為保存臨時文件的目錄,會定期清除,所以我們最好手動修改hadoop集群的pid文件的存放目錄。配置步驟如下:
在/var目錄下創建目錄/var/hadoop/pids,作為hadoop的pid文件存放目錄,並且需要修改目錄的所有者和所屬組群,因為hadoop2用戶需要向該目錄下寫入pid文件:cd /var sudo mkdir hadoop cd hadoop sudo mkdir pids sudo chown -R hadoop2:hadoop2 /var/hadoop/pids
然后修改hadoop2的配置文件如下:
vi hadoop-env.sh export HADOOP_PID_DIR=/var/hadoop/pids vi yarn-env.sh export YARN_PID_DIR=/var/hadoop/pids
然后重新啟動集群就可以了。
-