Hadoop2.6.2全分布式集群搭建

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类型用户名
Master192.168.74.147主节点root
Slave1192.168.74.144从节点root
Slave2192.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集群已经搭建成功!你也可以通过浏览器来查看集群信息。
hadoop
注意这里实际上是主节点IP:192.168.74.147,之所以输入hadoop可以访问是因为在客户机中对hosts文件中添加了“192.168.74.147 hadoop”进行了关联,如果没有此步骤可以输入:主节点IP:+端口50070 来查看。

我们可以看到活节点数是2,说明节点正常运行。
hadoop

当然我们还可以通过此页面来看日志文件
hadoop
hadoop

总结

1.不成功原因

首先对linux操作要有一定的熟悉程度,其次要学会查看日志和找错误提示,在修改配置文件时要仔细。如果hadoop和Java版本不合适也会导致无法搭建,博客中的版本并不是最好的,事实上hadoop1.7.3和Java1.8在后续使用中更好。此博文作为大数据学习有很多不足的地方,欢迎留言指出。

2.用到的知识

工作过程中撰写的部署文档,注释,文字说明详尽。 1.关于注册失败错误,查看log: ============= INFO 2017‐09‐21 10:52:33,435 security.py:178 ‐ Server certificate not exists, downloading INFO 2017‐09‐21 10:52:33,435 security.py:191 ‐ Downloading server cert from https://ambari‐test1.com:9440/cert/ca/ ERROR 2017‐09‐21 10:52:33,510 ServerAPI.py:137 ‐ POST https://ambari‐ test1.com:9441/api/v1/register failed. (SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)'),) ============ 1 2 3 4 5 6 这个错误是因为python‐2.7.5‐e58版本默认是使用ssl验证,为了解决这个问题需要关闭此验证 或者降级python版本 vi /etc/python/cert‐verification.cfg #修改的内容如下 verify=disable 第二种办法是更新openssl的版本(经测试,更新到1.1版本无效) 具体做法是 1.可以直接通过来在线更新来解决 yum upgrade openssl 2.编译源码 yum install gcc gcc‐c++ autoconf automake zlib zlib‐devel pcre‐devel #下载编译 源码需要的工具 cd /usr/local/src wget https://www.openssl.org/source/openssl‐1.0.2‐latest.tar.gz #下载源码包 tar ‐xzvf openssl‐1.0.2‐latest.tar.gz #解压 cd openssl‐1.0.2* ./config #检查配置 make && make install #编译并安装 mv /usr/bin/openssl /tmp/ #移除原有的openssl ln ‐s /usr/local/bin/openssl /usr/bin/openssl #建立软连接 注意,openssl所在目录请自行判断 注意,openssl: error while loading shared libraries: libssl.so.1.1 解决方法: 在root用户下执行: ln ‐s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1  ln ‐s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1  openssl version #查看openssl版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值