自己动手搭建一个Hadoop集群,对于Hadoop的学习、理解非常有帮助,从中能够学习到Hadoop常用的端口、配置文件、配置信息等内容。
准备工作
- 四台机器:master、slave1、slave2、slave3;
- 在master上开通外网访问权限,slave1\slave2\slave3无需外网访问权限;
- 下载JDK1.8.0_111;
- 在master上安装vim\wget\telnet等组件;
- 打通MASTER与SLAVE之间的通道(生成Key/复制Key):ssh-keygen -t rsa;
- 将Master与Slave的IP地址添加到/etc/hosts里面:
172.198.0.12 MASTER
172.198.0.13 SLAVE1
172.198.0.14 SLAVE2
172.198.0.15 SLAVE3
安装JDK
- 版主下载的是tar文件,因此只需要解压即可;
- 配置/etc/profile文件:export JAVA_HOME=/home/appuser/jdk1.8.0_111/, export PATH=$PATH:$JAVA_HOME/bin;
- 配置用户.bash_profile: export JAVA_HOME=/home/appuser/jdk1.8.0_111;
如果想要配置立刻生效,可以使用source /etc/profile命令。
配置Hadoop
安装思路:首先在MASTER节点中,配置完成,然后复制到SLAVE 节点中。
配置信息
配置文件
core-site.xml:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/appuser/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/appuser/hadoop/tmp/namedir</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/appuser/hadoop/tmp/datadir</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.seconday.http-address</name>
<value>slave1:50070</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.map.tasks</name>
<value>20</value>
</property>
<property>
<name>mapreduce.reduce.tasks</name>
<value>20</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
hadoop-env.sh:
export JAVA_HOME=/home/appuser/jdk1.8.0_111
分发到SLAVE节点
# Copy Hadoop File
scp -r ~/hadoop-2.6.0/ slave1:~/
scp -r ~/hadoop-2.6.0/ slave2:~/
scp -r ~/hadoop-2.6.0/ slave3:~/
# Copy Jdk File
scp -r ~/jdk1.8.0_111/ slave1:~/
scp -r ~/jdk1.8.0_111/ slave2:~/
scp -r ~/jdk1.8.0_111/ slave3:~/
格式化NamdeNode
bin/hadoop namenode -format
如果在Log中出现:successfully …,说明格式化成功。
启动Hadoop集群
~/hadoop-2.6.0/sbin/start-all.sh
注
- 有时候DataNode启动不成功,这时候需要查看对应机器的logs,一般能够找到原因。大部分的原因在于Master与Slave的通讯出现问题,特别是Clone的虚拟机;
- NameNode一般会启动成功,如果不能启动成功,可以查看相应的logs,或查看配置是否出现问题。