Hadoop2.6.2全分布式集群搭建.
准备环境
1.机器以及软件下载
客户端:Win10专业版,64位操作系统,内存8G
服务器(虚拟机运行):Linux CentOS 64位 7.0 内存1.5G
虚拟软件:VMware Workstation 12
JDK:1.7.0_79 64 bit
Hadoop:2.6.2
2.网络环境
1.本次搭建采用三台虚拟机,一台作为 Master,两台是Slave。三台机器ip分配如下:
机器名 | IP | 类型 | 用户名 |
---|---|---|---|
Master | 192.168.74.147 | 主节点 | root |
Slave1 | 192.168.74.144 | 从节点 | root |
Slave2 | 192.168.74.146 | 从节点 | root |
机器之间可以相互ping通。
2.所有机器防火墙全部关闭。
[root@master home]# firewall-cmd --state
#查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
[root@master home]# systemctl stop firewalld.service
#停止firewall
[root@master home]# systemctl disable firewalld.service
#禁止firewall开机启动
集群搭建步骤
1.安装配置JDK1.7.0_79
在Master节点中的/home中建好java,soft目录。将jdk1.7.0_79压缩包放在soft目录中。
[root@master home]# mkdir java soft
进入soft目录,将下载好的jdk安装包解压到java目录下。
[root@master soft]# tar -zxvf jdk1.7.0_79.tar.gz -C /home/java
进入配置文件./bash_profile配置Java路径。
[root@master home]# vim ~/.bash_profile
在文件末尾加入如下信息:
JAVA_HOME=/home/java/jdk1.7.0_79
HADOOP_HOME=/home/hadoop/hadoop-2.6.2
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH:$HOME/bin
export PATH
[root@master home]# source ~/.bash_profile
#使配置文件生效
查看java信息成功,则配置生效。
[root@master home]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
到此,Master节点Java信息配置成功。从节点配置同上方法。
2.集群搭建配置
1.机器信息配置
[root@master home]# vim /etc/hostname
#在此文件中改名字
配置网络信息:
[root@master home]# vim /etc/sysconfig/network
添加如下信息:
# Created by anaconda
NETWORKING=yes
NETWORKING_IPV6=no
PEERNTP=no
GATEWAY=192.168.74.147
HOSTNAME=master
关联机器名和IP,使个节点可以通过机器名访问。
[root@master home]# vim /etc/hosts
添加节点和IP信息。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.74.147 master
192.168.74.144 slave1
192.168.74.146 slave2
2.ssh免密码登录
修改三台机器ssh配置文件
[root@master home]# vim /etc/ssh/sshd_config
去掉如下三行注释,退出
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
接着产生公钥
[root@master .ssh]# ssh-keygen -t rsa
将各节点产生的公钥合并到authorized_keys中,并且用scp命令传给其他节点
[root@master .ssh]# cat id_rsa.pub >>authorized_keys
[root@master .ssh]# ssh root@slave1 cat ~/.ssh/id_rsa.pub >> authorized_keys
[root@master .ssh]# ssh root@slave2 cat ~/.ssh/id_rsa.pub >> authorized_keys
[root@master .ssh]# scp authorized_keys root@slave1:/root/.ssh/authorized_keys
[root@master .ssh]# scp authorized_keys root@slave2:/root/.ssh/authorized_keys
成功后用ssh无密码登录
[root@master home]# ssh slave1
Last login: Sun Apr 9 19:20:24 2017
[root@slave1 ~]# ssh slave2
ssh: connect to host slave2 port 22: No route to host
[root@slave1 ~]# ssh master
Last login: Sun Apr 9 19:30:58 2017
[root@master ~]#
3.Hadoop安装
将下载到soft的压缩包解压到/home/hadoop目录下
[root@master soft]# tar -zxvf hadoop.tar.gz -C /home/hadoop
在/home/hadoop/下建立hdfs和tmp目录,并且在hdfs中建立name和data目录
[root@master hadoop]# ls
hadoop-2.6.2 hdfs inputs ncdc ncdc.jar tmp
[root@master hadoop]# cd hdfs
[root@master hdfs]# ls
data name
[root@master hdfs]#
接下来配置主要配置文件,首先进入/home/hadoop/hadoop-2.6.2/etc/hadoop
进入slaves文件加入节点名字
[root@master hadoop]# vim slaves
slave1
slave2
进入core-site.xml配置文件系统和临时目录等参数
[root@master hadoop]# vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</property>
</configuration>
配置hdfs-site.xml文件冗余数设为2
[root@master hadoop]# vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
配置mapred-site.xml.template 文件,此文件只有从节点需要配置
[root@master hadoop]# vim mapred-site.xml.template
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
配置yarn-site.xml文件,管理节点名字等
[root@slave1 hadoop]# vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
配置hadoop-env.sh,mapred-env.sh和yarn-env.sh中的JAVA_HOME。
# The java implementation to use.
export JAVA_HOME=/home/java/jdk1.7.0_79
将配置好的hadoop文件压缩后传给每个节点
[root@slave1 home]# tar -czf hadoop.tar.gz hadoop/
[root@slave1 home]# scp hadoop.tar.gz root@slave1:/home/
[root@slave1 home]# scp hadoop.tar.gz root@slave2:/home/
这样主节点配置信息传递到每个从节点,hadoop集群配置完成。
接下来在主节点格式化
[root@slave1 home]# hadoop namenode -format
提示信息就不演示了,最后会有提示格式化成功。
然后接下来可以启动集群,首先进入/home/hadoop/hadoop-2.6.2/sbin查看可执行的命令
[root@slave1 sbin]# ls
distribute-exclude.sh start-all.cmd stop-balancer.sh
hadoop-daemon.sh start-all.sh stop-dfs.cmd
hadoop-daemons.sh start-balancer.sh stop-dfs.sh
hdfs-config.cmd start-dfs.cmd stop-secure-dns.sh
hdfs-config.sh start-dfs.sh stop-yarn.cmd
httpfs.sh start-secure-dns.sh stop-yarn.sh
kms.sh start-yarn.cmd yarn-daemon.sh
mr-jobhistory-daemon.sh start-yarn.sh yarn-daemons.sh
refresh-namenodes.sh stop-all.cmd
slaves.sh stop-all.sh
启动集群可以用 ./start-all.sh命令同时启动start-dfs.sh and start-yarn.sh
[root@slave1 sbin]# ./start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
启动成功后jps查看java进程,master进程如下:
[root@master sbin]# jps
5916 ResourceManager
5773 SecondaryNameNode
6170 Jps
5596 NameNode
slave进程如下:
[root@slave1 ~]# jps
4151 Jps
3894 DataNode
3995 NodeManager
至此hadoop集群已经搭建成功!你也可以通过浏览器来查看集群信息。
注意这里实际上是主节点IP:192.168.74.147,之所以输入hadoop可以访问是因为在客户机中对hosts文件中添加了“192.168.74.147 hadoop”进行了关联,如果没有此步骤可以输入:主节点IP:+端口50070 来查看。
我们可以看到活节点数是2,说明节点正常运行。
当然我们还可以通过此页面来看日志文件
总结
1.不成功原因
首先对linux操作要有一定的熟悉程度,其次要学会查看日志和找错误提示,在修改配置文件时要仔细。如果hadoop和Java版本不合适也会导致无法搭建,博客中的版本并不是最好的,事实上hadoop1.7.3和Java1.8在后续使用中更好。此博文作为大数据学习有很多不足的地方,欢迎留言指出。