zoukankan      html  css  js  c++  java
  • 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天的时间研究得到了很多的知识。

  • 相关阅读:
    HDU4474 Yet Another Multiple Problem BFS搜索
    HDU4473 Exam 数学分析
    2013ACM多校联合(4)
    POJ1273 网络流...
    HDU4472 Count 递推
    POJ1149 PIGS 网络流
    UVA10881 Piotr's Ants 想法题
    javascript js string.Format()收集
    修改 设置 vs.net 网站 调试 设为 起始页
    【转】HTML5杂谈 概念与现行游戏 割绳子 宝石迷阵
  • 原文地址:https://www.cnblogs.com/suway/p/9606982.html
Copyright © 2011-2022 走看看