自己动手搭建一个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:
hadoop.tmp.dir</name>
/home/appuser/hadoop/tmp</value>
</property>
fs.default.name</name>
hdfs://master:9000</value>
</property>
</configuration>
hdfs-site.xml:
dfs.name.dir</name>
/home/appuser/hadoop/tmp/namedir</value>
</property>
dfs.data.dir</name>
/home/appuser/hadoop/tmp/datadir</value>
</property>
dfs.replication</name>
2</value>
</property>
dfs.http.address</name>
master:50070</value>
</property>
dfs.namenode.seconday.http-address</name>
slave1:50070</value>
</property>
dfs.webhdfs.enabled</name>
true</value>
</property>
</configuration>
mapred-site.xml:
mapred.job.tracker</name>
master:9001</value>
</property>
mapreduce.jobhistory.address</name>
master:10020</value>
</property>
mapreduce.framework.name</name>
yarn</value>
</property>
mapreduce.map.tasks</name>
20</value>
</property>
mapreduce.reduce.tasks</name>
20</value>
</property>
mapreduce.jobhistory.webapp.address</name>
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,或查看配置是否出现问题。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!