hadoop伪分布式集群搭建

一、群环境准备

1.1三台虚拟机关闭防火墙

三台机器执行以下命令(root用户来执行)

service iptables stop
chkconfig iptables off
image.png

1.2三台虚拟机关闭防火墙

vim /etc/selinux/config
image.png

1.3三台机器更改主机名

vim /etc/sysconfig/network
node01

node02

node03

1.4三台机器做主机名与IP地址的映射

vim /etc/hosts
192.168.52.100 node01.hadoop.com  node01
192.168.52.110 node02.hadoop.com  node02
192.168.52.120 node03.hadoop.com  node03

1.5三台机器重启

reboot  -h  now

1.6三台机器机器免密码登录

1.6.1三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥

ssh-keygen -t rsa      

执行该命令之后,按下三个回车即可


image.png

1.6.2拷贝公钥到同一台机器
三台机器执行命令:

ssh-copy-id node01.hadoop.com
image.png

1.6.3复制第一台机器的认证到其他机器
在第一台机器上面指向以下命令

scp /root/.ssh/authorized_keys node02.hadoop.com:/root/.ssh
scp /root/.ssh/authorized_keys node03.hadoop.com:/root/.ssh

1.6.4查看是否成功

cat /root/.ssh/authorized_keys
image.png

1.7三台机器时钟同步

第一种同步方式:通过网络进行时钟同步
通过网络连接外网进行时钟同步,必须保证虚拟机连上外网

ntpdate us.pool.ntp.org

阿里云时钟同步服务器

ntpdate ntp4.aliyun.com

三台机器定时任务

crontab  -e   
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;
或者
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

第二种时钟同步方式:通过某一台机器进行同步
以192.168.52.100这台服务器的时间为准进行时钟同步
1.确定是否安装了ntpd的服务

rpm -qa  | grep  ntpd

如果没有安装,可以进行在线安装

yum -y install ntpd

设置ntpd的服务开机启动

chkconfig ntpd on

2.编辑/etc/ntp.conf

vim /etc/ntp.conf

在文件中添加如下内容

restrict  192.168.52.0  mask  255.255.255.0  nomodify  notrap

注释一下四行内容

#server  0.centos.pool.ntp.org
#server  1.centos.pool.ntp.org
#server  2.centos.pool.ntp.org
#server  3.centos.pool.ntp.org

去掉以下内容的注释,如果没有这两行注释,那就自己添加上

server   127.127.1.0  #  local  clock
fudge    127.127.1.0  stratum  10
image.png

配置以下内容,保证BIOS与系统时间同步

vim  /etc/sysconfig/ntpd   
SYNC_HWLOCK=yes   
image.png

另外两台机器与第一台机器时间同步
另外两台机器与192.168.52.100进行时钟同步

crontab  -e
*/1 * * * * /usr/sbin/ntpdate 192.168.52.100

1.8三台机器安装jdk

1.查看自带的openjdk

rpm -qa | grep java

2.卸载系统自带的openjdk

rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64 --nodeps

3.上传jdk并解压然后配置环境变量
所有软件的安装路径

mkdir -p /export/servers

所有软件压缩包的存放路径

mkdir -p /export/softwares

4.上传jdk到/export/softwares路径下去,并解压

tar -zxvf jdk-8u141-linux-x64.tar.gz -C ../servers/

配置环境变量

vim /etc/profile
export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH
修改完成之后记得  source /etc/profile生效

1.9zookeeper的介绍以及集群环境搭建

1.下载zookeeeper的压缩包,下载网址如下
http://archive.apache.org/dist/zookeeper/
我们在这个网址下载我们使用的zk版本为3.4.9
下载完成之后,上传到我们的linux的/export/softwares路径下准备进行安装
解压zookeeper的压缩包到/export/servers路径下去,然后准备进行安装

cd /export/softwares
tar -zxvf zookeeper-3.4.9.tar.gz -C ../servers/

image.png

2.修改配置文件
第一台机器修改配置文件

cd /export/servers/zookeeper-3.4.9/conf/
cp zoo_sample.cfg zoo.cfg
mkdir -p /export/servers/zookeeper-3.4.9/zkdatas/
vim  zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888

image.png

3.添加myid配置
在第一台机器的
/export/servers/zookeeper-3.4.9/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1

echo 1 > /export/servers/zookeeper-3.4.9/zkdatas/myid 

image.png

4.安装包分发并修改myid的值
安装包分发到其他机器
第一台机器上面执行以下两个命令

scp -r  /export/servers/zookeeper-3.4.9/ node02:/export/servers/
scp -r  /export/servers/zookeeper-3.4.9/ node03:/export/servers/

第二台机器上修改myid的值为2
第三台机器上修改myid的值为3

echo 2 > /export/servers/zookeeper-3.4.9/zkdatas/myid
echo 3 > /export/servers/zookeeper-3.4.9/zkdatas/myid

5.三台机器启动zookeeper服务
这个命令三台机器都要执行

/export/servers/zookeeper-3.4.9/bin/zkServer.sh start

查看启动状态

/export/servers/zookeeper-3.4.9/bin/zkServer.sh  status

1.10、 CDH 伪分布式环境搭建

1.将我们重新编译之后支持snappy压缩的hadoop包上传到第一台服务器并解压
第一台机器执行以下命令

cd /export/softwares/
mv hadoop-2.6.0-cdh5.14.0-自己编译后的版本.tar.gz hadoop-2.6.0-cdh5.14.0.tar.gz
tar -zxvf hadoop-2.6.0-cdh5.14.0.tar.gz -C ../servers/

2.查看hadoop支持的压缩方式以及本地库
第一台机器执行以下命令

cd /export/servers/hadoop-2.6.0-cdh5.14.0
bin/hadoop checknative
image.png

如果出现openssl为false,那么所有机器在线安装openssl即可,执行以下命令,虚拟机联网之后就可以在线进行安装了

yum -y install openssl-devel

3.修改配置文件
修改core-site.xml
第一台机器执行以下命令

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim core-site.xml

    
        fs.default.name
        hdfs://192.168.52.100:8020
    
    
        hadoop.tmp.dir
        /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
    
    
    
        io.file.buffer.size
        4096
    

    
    
        fs.trash.interval
        10080
    

修改hdfs-site.xml
第一台机器执行以下命令

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim hdfs-site.xml

     
    
     
     
            dfs.namenode.secondary.http-address
            node01:50090
    

    
        dfs.namenode.http-address
        node01:50070
    
    
        dfs.namenode.name.dir
        file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
    
    
    
        dfs.datanode.data.dir
        file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas
    
    
    
        dfs.namenode.edits.dir
        file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
    
    
        dfs.namenode.checkpoint.dir
        file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
    
    
        dfs.namenode.checkpoint.edits.dir
        file:///export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits
    
    
        dfs.replication
        1
    
    
        dfs.permissions
        false
    

        dfs.blocksize
        134217728
    

修改hadoop-env.sh

vim hadoop-env.sh
export JAVA_HOME=/export/servers/jdk1.8.0_141

修改mapred-site.xml

vim mapred-site.xml

    
        mapreduce.framework.name
        yarn
    

    
        mapreduce.job.ubertask.enable
        true
    
    
    
        mapreduce.jobhistory.address
        node01:10020
    

    
        mapreduce.jobhistory.webapp.address
        node01:19888
    

修改yarn-site.xml

vim yarn-site.xml

    
        yarn.resourcemanager.hostname
        node01
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
    
        yarn.log-aggregation-enable
        true
    
    
        yarn.log-aggregation.retain-seconds
        604800
    

修改slaves文件

vim slaves
node01
node02
node03

创建文件存放目录

mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/tempDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/namenodeDatas
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas 
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/snn/name
mkdir -p /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/snn/edits

安装包的分发
第一台机器执行以下命令

cd /export/servers/
scp -r hadoop-2.6.0-cdh5.14.0/ node02:$PWD
scp -r hadoop-2.6.0-cdh5.14.0/ node03:$PWD

配置hadoop的环境变量
三台机器都要进行配置hadoop的环境变量
三台机器执行以下命令

vim  /etc/profile
export HADOOP_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
配置完成之后生效
source /etc/profile

集群启动
要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群。
注意:首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的 HDFS 在物理上还是不存在的。

bin/hdfs namenode  -format或者bin/hadoop namenode –format

单个节点逐一启动

在主节点上使用以下命令启动 HDFS NameNode: 
hadoop-daemon.sh start namenode 
在每个从节点上使用以下命令启动 HDFS DataNode: 
hadoop-daemon.sh start datanode 
在主节点上使用以下命令启动 YARN ResourceManager: 
yarn-daemon.sh  start resourcemanager 
在每个从节点上使用以下命令启动 YARN nodemanager: 
yarn-daemon.sh start nodemanager 
以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的start 改为stop 即可。

脚本一键启动
node01节点上执行以下命令
第一台机器执行以下命令

cd /export/servers/hadoop-2.6.0-cdh5.14.0/
sbin/start-dfs.sh
sbin/start-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

停止集群

sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/mr-jobhistory-daemon.sh start historyserver

浏览器查看启动页面
hdfs集群访问地址:
http://192.168.52.100:50070/dfshealth.html#tab-overview
yarn集群访问地址:
http://192.168.52.100:8088/cluster
jobhistory访问地址:
http://192.168.52.100:19888/jobhistory

1.11测试-HDFS 使用初体验

从Linux 本地上传一个文本文件到 hdfs 的/test/input 目录下

hdfs -dfs -mkdir -p /test/input 
hdfs -dfs -put /root/install.log  /test/input 

在 Hadoop 安装包的
hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce 下有官方自带的mapreduce 程序。我们可以使用如下的命令进行运行测试。
示例程序jar:
hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar
计算圆周率:

hadoop jar  /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar  pi  2 5

你可能感兴趣的:(hadoop伪分布式集群搭建)