• 快速搭建Hadoop及HBase分布式环境


    本文旨在快速搭建一套Hadoop及HBase的分布式环境,自己测试玩玩的话ok,如果真的要搭一套集群建议还是参考下ambari吧,目前正在摸索该项目中。下面先来看看怎么快速搭建一套分布式环境。

    准备

    1. 三台虚拟机:1台作为NameNode和HMaster 两台作为DataNode和HRegionServer。同时三台都安装zookeeper。
    2. Hadoop-2.7.3,HBase-1.2.4 ,Zookeeper-3.4.9 , JDK1.8.0_121 安装包

    基础环境准备

    对三台机器创建新用户hadoop,并将其加入sudoers,并更改hostname

    useradd hadoop
    passwd hadoop
    
    vi /etc/sudoers
    
    hadoop ALL=(ALL)    ALL
    
    vi /etc/hostname
    #配置为 namenode-1/datanode-1/datanode-2
    

    配置免密登录,配置一台机器,生产ssh密钥并配置本机免密登录,然后将整个.ssh文件夹传到其他机器上,更改authorized_keys的权限即可

    ssh-keygen #可一直回车
    #配置本机免密
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    #上传到其他机器
    scp -r .ssh hadoop@xxxx:~
    #登录到其他机器,设置authorized_keys权限
    chmod 644 .ssh/authorized_keys
    

    关闭防火墙并禁止开机启动

    service iptables status #查看防火墙状态`  
    service iptables stop #关闭防火墙`  
    chkconfig iptables --list #查看防火墙开机启动状态`  
    chkconfig iptables off #关闭防火墙开机启动`  
    reboot # 重启`
    

    安装JDK

    mkdir /usr/java
    tar zxvf xxjdk.tar.gz
    mv jdk1.8.0_121/ /usr/java # 安装JDK
    
    vi /etc/profile # 添加JAVA_HOME
    
    export JAVA_HOME=/usr/java/jdk1.8.0_121
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    source /etc/profile
    

    安装Zookeeper并配置集群

    根据三台机器的ip配置hosts(配置一份然后scp到其他机器):

    cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.8.3 namenode-1
    192.168.8.4 datanode-1
    192.168.8.5 datanode-2

    解压缩zookeeper安装文件,修改配置项:

    tar -zxvf zookeeper-3.4.9.tar.gz -C /home/hadoop
    
    cd /home/hadoop/zookeeper-3.4.9/conf/
    cp zoo_sample.cfg zoo.cfg
    vi zoo.cfg
    
    #修改dataDir的值
    dataDir=/home/hadoop/zookeeper-3.4.9/tmp
    
    #在文件后面添加(server后面的数字与myid保持一致)
    server.1=namenode-1:2888:3888
    server.2=datanode-1:2888:3888
    server.3=datanode-2:2888:3888
    

    创建tmp文件,并创建myid文件

    mkdir /home/hadoop/zookeeper-3.4.9/tmp
    echo 1 > /home/hadoop/zookeeper-3.4.9/tmp/myid
    

    将配置好的zookeeper文件夹传到其他机器上

    scp -r /home/hadoop/zookeeper-3.4.9 hadoop@xxxx:~
    

    然后分别更改其他机器的myid文件,对应配置文件中server后面的数字。分别启动三台机器的zookeeper

    cd /home/hadoop/apps/zookeeper-3.4.9/bin/
    ./zkServer.sh start
    

    查看目前zookeeper状态,一个leader,两个follower,命令如下:

    ./zkServer.sh status
    

    安装Hadoop

    解压Hadoop安装包

    tar zxvf hadoop-2.7.3.tar.gz
    

    配置各项配置文件

    hadoop-env.sh

    在hadoop-env.sh中配置JAVA_HOME环境变量

    export JAVA_HOME="/usr/java/jdk1.8.0_121"
    

    core-site.xml

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

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://namenode-1:9000</value>
        </property>
        <property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
        </property>
    </configuration>
    

    hdfs-site.xml

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

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/home/hadoop/hadoopdata/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/home/hadoop/hadoopdata/data</value>
        </property>
        <property>
            <name>dfs.blocksize</name>
            <value>268435456</value>
        </property>
    </configuration>
    

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

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>hmaster:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>hmaster:19888</value>
        </property>
    </configuration>
    

    yarn-site.xml

    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.resourcemanager.address</name>
            <value>namenode-1:8032</value>
        </property>
        <property>
            <name>yarn.resourcemanager.scheduler.address</name>
            <value>namenode-1:8030</value>
        </property>
        <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
            <value>namenode-1:8031</value>
        </property>
        <property>
            <name>yarn.resourcemanager.admin.address</name>
            <value>namenode-1:8033</value>
        </property>
        <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>namenode-1:8088</value>
        </property>
    </configuration>
    

    slaves

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

    datanode-1
    datanode-2

    将上面配置好的hadoop文件夹scp拷贝到其他两台机器上。

    格式化HDFS存储

    进入hadoop目录

    # bin/hdfs namenode -format
    

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

    17/05/17 16:18:16 INFO namenode.NameNode: STARTUP_MSG: 
    /************************************************************
    STARTUP_MSG: Starting NameNode
    STARTUP_MSG:   host = namenode-1/192.168.8.3
    STARTUP_MSG:   args = [-format]
    STARTUP_MSG:   version = 2.7.3
    ......
    17/05/17 16:18:17 INFO common.Storage: Storage directory /home/hadoop/hadoopdata/name has been successfully formatted.
    17/05/17 16:18:18 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
    17/05/17 16:18:18 INFO util.ExitUtil: Exiting with status 0
    17/05/17 16:18:18 INFO namenode.NameNode: SHUTDOWN_MSG: 
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at namenode-1/192.168.8.3
    ************************************************************/
    

    启动Hadoop服务

    启动和停止脚本位于${HADOOP_HOME}下sbin目录

    启动HDFS

    # sbin/start-dfs.sh
    

    启动Yarn

    # sbin/start-yarn.sh
    

    启动MapReduce JobHistory Server

    # sbin/mr-jobhistory-daemon.sh start historyserver
    

    验证服务是否正常运行

    查看Master节点上服务:

    [hadoop@namenode-1 hadoop]$ jps
    4283 NameNode
    4643 ResourceManager
    4466 SecondaryNameNode
    5259 Jps
    5173 JobHistoryServer
    

    查看Master节点上服务:

    [hadoop@datanode-1 ~]$ jps
    3116 Jps
    2844 DataNode
    2976 NodeManager
    

    各服务Web UI默认端口

    NameNode    50070
    ResourceManager 8088
    MapReduce JobHistory Server 19888
    

    登录各服务Web界面查看服务运行状况。

    停止Hadoop服务

    停止HDFS

    # sbin/stop-dfs.sh
    

    停止Yarn

    sbin/stop-yarn.sh

    停止MapReduce JobHistory Server

    # sbin/mr-jobhistory-daemon.sh stop historyserver
    

    安装HBase

    解压HBase安装包

    tar hbase-1.2.4.tar.gz
    

    配置HBase

    hbase-env.sh

    export JAVA_HOME=/usr/java/jdk1.8.0_121
    
    export HBASE_MANAGES_ZK=false
    

    hbase-site.xml

    <configuration>
        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
        <property>
            <name>hbase.rootdir</name>
            <value>hdfs://namenode-1:9000/hbase</value>
        </property>
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>namenode-1,datanode-1,datanode-2</value>
        </property>
    </configuration>
    

    regionservers

    配置regionservers主机列表

    datanode-1
    datanode-2

    将配置好的hbase目录scp到其他两天机器上。

    启动停止HBase

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

    # bin/start-hbase.sh
    

    停止HBase

    # bin/stop-hbase.sh
    

    查看HBase状态

    分别在Master节点和Slave节点上使用jps查看HBase相关进程是否正常运行

    [hadoop@namenode-1 ~]$ jps
    2302 ResourceManager
    1942 NameNode
    1730 QuorumPeerMain
    3781 HMaster
    4653 Jps
    2127 SecondaryNameNode
    
    [hadoop@datanode-1 ~]$ jps
    2268 HRegionServer
    1915 NodeManager
    1804 DataNode
    1662 QuorumPeerMain
    2715 Jps
    

    可进入HBase Web UI进行查看,默认端口为16010。

    参考文章:
    http://www.coolee.me/hadoop-hbase-installation.html

  • 相关阅读:
    提纲挈领webrtc之vad检测
    提纲挈领webrtc音频处理算法之写在前面的话
    搭建git远程服务器三步骤
    详解m4文件
    chrome浏览器被reimage pair 劫持怎么处理
    linux查看系统32位还是64位
    git gc和fsck的用法
    ubuntu 16.04 的64位 安装arm-none-linux-gnueabi-gcc的步骤和问题解决
    利用终端命令实现进入ntfs分区有两种方法。
    ubuntu-14.10下,安装gcc交叉编译器遇到问题及解决方法
  • 原文地址:https://www.cnblogs.com/jixin/p/7999810.html
Copyright © 2020-2023  润新知