自己安装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集群情况。