• Hadoop及Zookeeper+HBase完全分布式集群部署


    Hadoop及HBase集群部署

    一、 集群环境

    1. 系统版本

    虚拟机:内存 16G CPU 双核心

    系统: CentOS-7 64位

    系统下载地址:

    http://124.202.164.6/files/417500000AB646E7/mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso

    1. 软件版本

    hadoop-2.8.1.tar.gz

    hbase-1.3.1-bin.tar.gz

    zookeeper-3.4.10.tar.gz

    jdk-8u144-linux-x64.tar.gz

    1. 主机环境

    物理机:Window Server 2012 R2

    虚拟机:VMware Workstation Pro 12

    1. 三台虚拟机

    =Hamster

    I P:192.168.0.10

    用户名:hadoop

    =hslave-1

    I P:192.168.0.11

    用户名:hadoop

    =hslave-2

    I P:192.168.0.12

    用户名:hadoop

    1. 集群环境

    一共建立了三台虚拟机

    Ip节点名称为:

    Master节点

    192.168.0.10 hmaster.hcluster

    Slave节点

    192.168.0.11 hslave-1.hcluster

    192.168.0.12 hslave-2.hcluster

    三个虚拟机上都必须安装zookeeper

    注意:操作说明,命令前面有#号代表root用户登入的

    1. 时间说明

    书写时间:2017-10-19

    第一次更新时间:2017-10-22

    二、 安装基础集群环境

    1. 基础环境配置

    为了配置方便,集群中防火墙已经全部关闭,并且禁止开机启动

    1. 关闭防火墙

    由于新版的CentOS-7 默认采用的firewalld防火墙,不是iptables,关闭命令为

    systemctl stop firewalld

    systemctl mask firewalld

    如果想切换成iptables防火墙请如下操作:

    安装:yum install iptables-services

    设置开机启动 systemctl enable iptables

    具体使用请看iptables基础操作

    注意:在集群中所有节点上执行相同的操作

    1. 配置/etc/hosts

    编辑/etc/host文件,加入集群节点的IP与Hostname对应关系

    192.168.0.10 hmaster hmaster.hcluster

    192.168.0.11 hslave-1 hslave-1.hcluster

    192.168.0.12 hslave-2 hslave-2.hcluster

    注意:在集群中所有节点上执行相同的操作

    1. 安装Java
    1. 解压jdk-8u144-linux-x64.tar.gz至/opt目录

    tar -xzf jdk-7u79-linux-x64.tar.gz -C

    /opt

    1. 添加Java环境变量到文件/etc/profile的最后

    =JAVA_HOME===

    export
    JAVA_HOME="/opt/jdk1.8.0_144"

    export JAVA_BIN=$JAVA_HOME/bin

    export JAVA_LIB=$JAVA_HOME/lib

    export
    CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

    export PATH=$JAVA_BIN:$PATH

    1. 导入环境变量

    source /etc/profile

    1. 验证安装结果

    执行java -version验证是否安装成功

    结果:

    注意:在集群中所有节点上执行相同的操作

    1. 安装ntp

    在Hadoop集群中, 需要保证各节点的时钟同步

    1. 在所有节点安装ntp服务

    yum install ntp ntpdate

    1. Master节点配置

    在Master节点,编辑配置文件/etc/ntp.conf,
    添加如下配置,使Master节点的ntp服务接受来自集群网段的时间同步请求

    restrict 192.168.1.0 mask 255.255.255.0
    nomodify notrap

    1. 启动Master节点的ntpd服务,并设置为开机启动

    chkconfig --level 345 ntpd on

    service ntpd start

    1. Slave节点配置

    在Slave节点,编辑配置文件/etc/ntp.conf,
    添加如下配置,使之与Master节点的时钟进行同步

    server hamster

    第一次启动Slave节点上的ntpd前,先手动与Master节点进行时钟同步

    ntpdate hamster

    1. 启动Slave节点的ntpd服务,并设置为开机启动

    chkconfig --level 345 ntpd on

    service ntpd start

    注意:Ntpd启动的时候通常需要一段时间大概5分钟进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,报错"no server
    suitable for synchronization found"

    1. 安装rsync

    通过rsync工具,hadoop控制脚本能够将配置文件分发到集群的各个节点中。 默认该功能未启用,可以通过设置hadoop-env.sh中的HADOOP_MASTER变量启动。 启用rsync后,当工作节点的守护进程启动后,会把以HADOOP_MASTER为根的目录树与本地的HADOOP_INSTALL目录同步

    yum install

    rsync

    注意:在集群中所有节点上执行相同的操作

    1. 配置Master节点到所有节点的无密码登录

    前提: 集群各节点使用相同的登录用户名,且不建议使用root用户,本文中使用用户名hadoop。

    在所有节点上创建用户hadoop

    useradd hadoop

    passwd hadoop

    New password:

    Retype new password:

    passwd: all authentication tokens updated
    successfully.

    1. 在Master节点上生成主机密钥

    在Master 第一个机器节点上,切换hadoop用户进行设置

    $ ssh-keygen -t rsa -P ‘’

    一路回车,最后输入y回车

    执行上述命令后,一路回车,会在.ssh下生成私钥id_rsa和公钥id_rsa.pub两个文件

    1. 复制Master公钥到被登录节点的authorized_keys文件中

    首先配置Master到Master的无密码登录

    注意:以下步骤必须在hadoop(只要不是root用户就可以)用户下进行创建.ssh文件夹,然后复制authorized_keys文件,在hadoop用户下设置对应的权限

    cat .ssh/id_rsa.pub >>

    .ssh/authorized_keys

    chmod 600 .ssh/authorized_keys

    然后配置Master到Slave的无密码登录,将Master节点id_rsa.pub中的内容复制到Slave节点的${HOME}/.ssh/authorized_keys文件中

    1. 首先将公钥文件传到Slave节点

    scp .ssh/id_rsa.pub hadoop@hslave-1:/home/hadoop/id_rsa.pub.hmaster

    1. 在Slave节点上创建文件.ssh/authorized_keys

    mkdir .ssh

    cat id_rsa.pub.hmaster >>

    .ssh/authorized_keys

    chmod 700 .ssh

    chmod 600 .ssh/authorized_keys

    rm -f id_rsa.pub.hmaster

    1. 依次在所有Slave节点上执行相同的操作,并在Master节点登录Slave进行验证

    ssh hslave-1

    1. 如果不能连接

    在root用户下打开Terminal

    输入命令 cat /etc/passwd

    从上图可以看出hadoop用户,缺少了一个定义,然后用gedit或者vim编辑

    gedit /etc/passwd

    在1001: 这里添加hadoop 保存即可

    这样就可以免密登录了:

    1. 修改 ulimit 限制
    1. 这个配置针对HBase

    参照HBase官方文档

    因为HBase 会在同一时间打开大量的文件句柄和进程,超过 Linux 的默认限制,导致可能会出现如下错误。

    所以编辑/etc/security/limits.conf文件,添加以下两行,提高能打开的句柄数量和进程数量

    hadoop - nofile 32768

    hadoop - nproc 32000

    还需要在/etc/pam.d/common-session 加上这一行:

    否则在/etc/security/limits.conf上的配置不会生效。

    最后还要注销(logout或者exit)后再登录,这些配置才能生效

    判断是否生效:

    登录hadoop用户之后,在命令行中输入:ulimit -n -u

    查看最大文件和进程数量是否改变了。

    返回结果如下:就成功了

    注意:在集群中所有节点上执行相同的操作

    至此, 集群及Hadoop的依赖配置已经完成,下面进行Hadoop的安装。

    三、 安装Hadoop

    1. 解压hadoop tar包
    1. 将hadoop软件包上传至集群各节点并解压

    本文中将hadoop-2.5.1.tar.gz上传至hadoop用户的主目录/home/hadoop下。

    tar -xzf hadoop-2.5.1.tar.gz

    mv hadoop-2.5.1 hadoop

    注意:在集群中所有节点上执行相同的操作

    1. 设置hadoop文件的权限普通用户

    chown -R Hadoop:Hadoop /home/Hadoop/hadoop

    1. 配置hadoop各配置文件

    hadoop的配置文件位于/home/hadoop/etc/hadoop下

    a) 修改jdk路径

    b) core-site.xml

    用于定义系统级别的参数,如HDFS URL、Hadoop的临时目录以及用于rack-aware集群中的配置文件的配置等

    hadoop.tmp.dir

    /home/hadoop/hadoop/temp

    fs.default.name

    hdfs://192.168.0.10:9000

    fs.defaultFS

    hdfs://192.168.0.10:9002

    io.file.buffer.size

    131072

    Slave主机修改hmaster为相应的节点名称例如第一台:hslave-1

    c) hdfs-site.xml

    HDFS的相关设定,如文件副本的个数、块大小及是否使用强制权限等

    dfs.replication

    2

    dfs.namenode.name.dir

    /home/hadoop/hadoop/name

    dfs.datanode.data.dir

    /home/hadoop/hadoop/data

    dfs.blocksize

    268435456

    d) mapred-site.xml.template

    HDFS的相关设定,如reduce任务的默认个数、任务所能够使用内存的默认上下限等

    mapreduce.framework.name

    yarn

    mapred.job.tracker

    http://192.168.0.10:9001

    mapreduce.jobhistory.address

    http://192.168.0.10:10020

    mapreduce.jobhistory.webapp.address

    http://192.168.0.10:19888

    Slave主机修改hmaster为相应的节点名称例如第一台:hslave-1

    e) yarn-site.xml

    yarn.nodemanager.aux-services

    mapreduce_shuffle

    yarn.resourcemanager.address

    192.168.0.10:8032

    yarn.resourcemanager.scheduler.address

    192.168.0.10:8030

    yarn.resourcemanager.resource-tracker.address

    192.168.0.10:8031

    yarn.resourcemanager.admin.address

    192.168.0.10:8033

    yarn.resourcemanager.webapp.address

    192.168.0.10:8088

    Slave主机修改hmaster为相应的节点ip地址例如第一台:192.168.0.11

    f) slaves

    Hadoop集群的slave主机列表,master启动时会通过SSH连接至此列表中的所有主机并为其启动DataNode和NodeManager

    文件在:hadoop/etc/hadoop/slaves

    hslave-1

    hslave-2

    Master 主机特有的配置

    g) 如果这个文件不存在就新建一个文件名字为masters,里面写入hmaster这个主机节点

    Master 主机特有的配置

    1. 配置环境变量

    export HADOOP_HOME=/usr/hadoop

    export PATH=$PATH :$HADOOP_HOME/bin

    1. 格式化HDFS存储

    进入hadoop下的bin目录(只在主机上操作)

    ./hdfs

    namenode -format

    在格式化过程中注意输出结果,成功后会有类似下面的输出:

    出现上图就是成功了

    1. 启动Hadoop服务

    启动和停止脚本位于hadoop下sbin目录

    a) 启动HDFS

    sbin/start-dfs.sh

    b) 启动Yarn

    sbin/start-yarn.sh

    c) 启动MapReduce JobHistory Server

    sbin/mr-jobhistory-daemon.sh start

    historyserver

    d) 启动所有一句话就可以

    sbin/start-all.sh

    e) 验证服务是否正常运行 查看Master节点上服务:

    新打开一个Terminal,然后输入jps查看结果

    节点机输入jps

    1. 停止Hadoop服务

    a) 停止HDFS

    sbin/stop-dfs.sh

    b) 停止Yarn

    sbin/stop-yarn.sh

    c) 停止MapReduce JobHistory Server

    sbin/mr-jobhistory-daemon.sh stop

    historyserver

    d) 停止所有一句话就可以

    sbin/stop-all.sh

    1. Web界面查看

    端口为50070

    四、 安装ZooKeeper

    注意:zookeeper安装在所有节点

    1. zookeeper安装在所有节点

    a) 在所有节点上解压zookeeper

    b) zookeeper配置文件zoo.cfg位于zookeeper下的conf目录下,默认不存在,可根据zoo_sample.cfg生成

    cd conf

    cp zoo_sample.cfg zoo.cfg

    c) zoo.cfg配置后内容如下:

    The number of milliseconds of each tick

    tickTime=2000

    The number of ticks that the initial

    synchronization phase can take

    initLimit=10

    The number of ticks that can pass between

    sending a request and getting an

    acknowledgement

    syncLimit=5

    the directory where the snapshot is

    stored.

    do not use /tmp for storage, /tmp here is

    just

    example sakes.

    dataDir=/home/hadoop/zookeeper/data

    dataLogDir=/home/hadoop/zookeeper/logs

    the port at which the clients will

    connect

    clientPort=2181

    the maximum number of client connections.

    increase this if you need to handle more

    clients

    maxClientCnxns=60

    Be sure to read the maintenance section

    of the

    administrator guide before turning on

    autopurge.

    http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

    The number of snapshots to retain in

    dataDir

    autopurge.snapRetainCount=3

    Purge task interval in hours

    Set to "0" to disable auto

    purge feature

    autopurge.purgeInterval=1

    server.1=0.0.0.0:2888:3888

    server.2=192.168.0.11:2888:3888

    server.3=192.168.0.12:2888:3888

    将zoo.cfg同步到zookeeper所有节点

    d) 创建zookeeper数据目录,并建立节点标识文件myid

    在hmaster节点创建标识为1的文件myid

    mkdir -p /home/hadoop/zookeeperdata/data

    echo "1" >

    /home/hadoop/zookeeperdata/data/myid

    同理,与zoo.cfg中配置相对应,在hslave-1和hslave-2节点上分别创建标识为2和3的标识文件。

    e) hslave-1

    mkdir -p /home/hadoop/zookeeperdata/data

    echo "2" >

    /home/hadoop/zookeeperdata/data/myid

    f) hslave-2

    mkdir -p /home/hadoop/zookeeperdata/data

    echo "3" >

    /home/hadoop/zookeeperdata/data/myid

    1. 启动zookeeper集群

    zookeeper启动脚本位于zookeeper下的bin目录下

    启动ZooKeeper

    在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:

    每一个节点机都得需要执行下面命令

    bin/zkServer.sh start

    zookeeper的日志zookeeper.out默认位于zookeeper主目录下,可通过修改${zkhome}/bin/zkEnv.sh中的ZOO_LOG_DIR变量来改变日志路径。

    1. 验证是否安装成功

    a) 安装完成之后,新打开一个Terminal,输入jps进行查看,是否有QuorumPeerMain线程存在,以下图片是没有此线程,

    b) 然后在刚才bin目录下输入指令:cat zookpeer.out

    如果返回结果为:

    c) 然后结果是java的环境变量可能没有起作用

    输入命令 source /etc/profile

    d) 防火墙问题,需要关闭防火墙

    systemctl disable firewalld

    service iptables stop

    e) 看到下图红色框内进程有了就代表成功了

    f) 输入命令查看状态是否启动成功

    ./zkServer.sh status

    非常大的注意:

    如果遇到第一个启动之后,但是输入:# ./zkServer.sh status

    出现

    代表其他节点上的还没有启动,要接着去启动其他节点机上的zookeeper,

    启动之后在输入查看

    就正常了

    五、 HBase安装

    HBase集群架构分为1个HMaster(hmaster)和2个HRegionServer(hslave-1,
    hslave-2)。

    1. 在所有节点解压hbase

    tar -xzf hbase-1.1.5-bin.tar.gz

    mv hbase-1.1.5-bin hbase

    以下称hbase主目录为${HBASE_HOME}。

    1. 配置HBase

    hbase配置文件位于${HBASE_HOME}/conf目录下。

    1. hbase-env.sh

    主要改两个配置:

    export JAVA_HOME=/opt/jdk1.8.0_79

    export HBASE_MANAGES_ZK=false

    1. hbase-site.xml

    hbase.cluster.distributed

    true

    hbase.rootdir

    hdfs://192.168.0.10:9002/hbase

    hbase.master

    hmaster:60000

    hbase.zookeeper.quorum

    hmaster,hslave-1,hslave-2

    hbase.zookeeper.property.dataDir

    /home/hadoop/zookeeper

    hbase.master.maxclockskew

    150000

    hbase.zookeeper.property.clientPort

    2181

    这里要特别注意的是hbase.rootdir里面的HDFS地址是要跟Hadoop 的core-site.xml里面的fs.defaultFS 的HDFS的IP地址或者域名、端口必须一致。其次是hbase.zookeeper.property.dataDir,其中a01513是我的操作系统用户名,根据你自己的情况改吧,或者放到其他目录也是可以的。hbase.cluster.distributed 是启用分布式模式,这里必须为true哦。hbase.zookeeper.quorum是配置集群IP地址集或者域名集,逗号分隔。hbase.master配置HBase的主节点端口,web端口是60010,通过web UI你可以确认你是否访问成功了。

    1. 配置regionservers主机列表

    hslave-1

    hslave-2

    1. 节点机列表都为

    hslave-1

    hslave-2

    注意:将上述配置同步到集群中所有节点。

    1. 启动停止HBase

    HBase脚本位于${HBASE_HOME}/bin目录下。

    bin/start-hbase.sh

    1. 停止HBase

    bin/stop-hbase.sh

    1. 如果启动的时候出现此问题,就注释下面内容

    出错地方

    注释的代码

    这个错误是时间没有同步

    注意:每一个节点机都配置

    1. 查看是否启动成功

    主机节点

    节点机1、节点机2

    注意:如果节点机HRegionServer进程,时间同步出现了问题,可以把时间同步加大

    hbase.master.maxclockskew

    150000

    1. 可以进入hbase shell,使用命令查看hbase状态

    2. 查询出表

    出现下图就表示真正成功了

    1. Web界面查看

    端口为16010

    六、 总结

    至此:完全分布式Hadoop+Zookeeper+HBase集群测试环境基本圆满完成,如有问题继续研究,通过这3天的时间研究得到了很多的知识。

  • 相关阅读:
    VB.Net计算含日文的字符串长度
    修改三个属性,就可以让错误提示更详细
    ORACLE分页查询SQL语法
    探知主力仓位的原理
    Linux手机研发五大难关
    当SNS在垂直行业嫁接电子商务
    实时股票数据获取方式
    商业周刊:网民周末更爱移动Web 分类信息超社交
    Linux下的C编程实战
    想起了赵丹阳
  • 原文地址:https://www.cnblogs.com/suway/p/9606982.html
Copyright © 2020-2023  润新知