hadoop安裝簡要指南
自己安裝hadoop時遇到了很多坑,這裡把驗證成功的方法記錄一下。
1. 部署叢集
首先你需要有幾臺伺服器,將它們的name和ip都記錄下來,然後將它們記錄到每一臺機器的/etc/hosts檔案中,比如:
192.168.119.128 namenode 192.168.119.129 datanode1 192.168.119.130 datanode2
然後需要配置這幾臺機器之間的免密登入,這一步非常非常容易出錯,一定要當心。首先先生成每臺機器的金鑰:
ssh-keygen -t rsa -P ‘’
然後將所有機器下/root/.ssh/id_rsa.pub的內容貼上到authorized_keys檔案,放在每臺機器的/root/.ssh/目錄下。 然後各個機器之間ssh來回登入一下,將首次免密登入需要輸入的yes給搞定(不來回登入一下的話,之後hadoop安裝可能會報錯)。
2. 安裝hadoop
安裝hadoop時記住自己的使用者名稱,不要隨便用sudo!用sudo建立的目錄是管理員許可權,普通使用者無法建立檔案。 在每一臺機器上建立hadoop的工作資料夾,比如:
mkdir /root/hadoop mkdir /root/hadoop/tmp mkdir /root/hadoop/var mkdir /root/hadoop/dfs mkdir /root/hadoop/dfs/name mkdir /root/hadoop/dfs/data
然後下載一個hadoop放到namenode機器上然後解壓縮,依次修改如下檔案:
- hadoop-2.8.0/etc/hadoop/slaves,新增datanode的名字
datanode1
datanode2
- hadoop-2.8.0/etc/hadoop/hadoop-env.sh,新增
export JAVA_HOME=/usr/java/jdk1.8.0_66
- hadoop-2.8.0/etc/hadoop/core-site.xml,在configuration之間新增
<property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://namenode:9000</value> </property>
- hadoop-2.8.0/etc/hadoop/hdfs-site.xml,在configuration之間新增
<property>
<name>dfs.name.dir</name>
<value>/root/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/root/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
- 複製hadoop-2.8.0/etc/hadoop/mapred-site.xml.template為mapred-site.xml,新增
<property>
<name>mapred.job.tracker</name>
<value>hdfs://namenode:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/root/hadoop/var</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- hadoop-2.8.0/etc/hadoop/yarn-site.xml,新增
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8182</value>
<discription>單個任務最大可申請記憶體,預設8182MB</discription>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
<discription>該節點可使用記憶體</discription>
</property>
然後使用scp命令將hadoop資料夾複製到其他所有節點上。
3. 啟動hadoop
執行初始化指令碼:
hadoop-2.8.0/bin/hadoop namenode -format
啟動hadoop:
hadoop-2.8.0/sbin/start-all.sh
可是使用如下命令檢視啟動後的狀態:
hadoop-2.8.0/bin/hadoop dfs admin -report檢視hadoop狀態
使用50060埠可以檢視hadoop overview,使用8088埠可以檢視hadoop叢集情況。