• Hadoop 分布式下安装和配置 HBase(CentOS 7系统)


    软件版本

    电脑系统:macOS 10.14.6

    虚拟机软件:Parallels Desktop15

    Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso

    CentOS 7 JDK版本:jdk1.8.0_162

    Hadoop版本:hadoop-2.7.7

    ZooKeeper版本:zookeeper-3.4.13

    HBase版本:hbase-1.3.1


    环境配置说明

    电脑配置:MacBook Pro 13(8G + 256G)

    三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)

    三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)

    三台虚拟机的用户名:lyh

    node为主结点、node2、node3为次节点

    一定要注意:标注是操作哪台node主机,默认是node1


    安装前提

    安装好JDK、Hadoop

    安装好ZooKeeper

    参考文献:Hadoop分布式集群搭建Hadoop 分布式下安装和配置 ZooKeeper(CentOS 7系统)


    下载并上传HBase安装包

    1. 下载HBase安装包:https://archive.apache.org/dist/hbase/1.3.1/hbase-1.3.1-bin.tar.gz

    2. 将下载好的HBase安装包上传到node1

      scp -r ~/Desktop/hbase-1.3.1-bin.tar.gz lyh@10.211.55.18:/app
      
    3. 进入node1,解压压缩包

      cd /app
      
      tar -zxvf hbase-1.3.1-bin.tar.gz
      
    4. 将hbase-1.3.1-bin 名字修改为 hbase-1.3.1

      mv hbase-1.3.1-bin hbase-1.3.1
      
    5. 创建 hbase 软链接

      ln -s hbase-1.3.1 hbase
      

    安装并配置 HBase

    配置Linux环境变量

    vim /etc/profile
    

    添加环境变量:

    # HBASE
    export HBASE_HOME=/app/hbase
    export PATH=$HBASE_HOME/bin:$PATH
    

    保存并退出,使环境变量生效:

    source /etc/profile
    

    集群配置

    HBase 资源配置

    配置 hbase-env.sh 文件

    cd /app/hbase/conf
    vim hbase-env.sh
    

    修改如下:

    1. 配置文件中的JAVA_HOME路径

      export JAVA_HOME=/app/jdk
      
    2. 注释掉对jdk7的优化,因为这里使用的jdk是8版本

      # export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
      # export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
      
    3. 开启 manages zookeeper(不使用hbase自带的zk)

      export HBASE_MANAGES_ZK=false
      
    4. 指定PID路径

      # 自定义HBase PID位置
      export HBASE_PID_DIR=/app/pids
      

    HBase 集群配置

    向 hbase-site.xml 文件中添加配置

    cd /app/hbase/conf
    
    vim hbase-site.xml
    

    添加如下内容:

    <configuration>
            <!-- Hbase的数据保存在HDFS对应的目录下:注意端口,与HDFS的一样 -->
            <property>
                    <name>hbase.rootdir</name>
                    <value>hdfs://node1:8020/hbase</value>        
            </property>
            
            <!-- 是否是分布式环境 -->
            <property>              
                    <name>hbase.cluster.distributed</name>
                    <value>true</value>
            </property>
            
            <!-- 配置ZK的地址,3个节点都启用ZooKeeper -->
            <property>
                    <name>hbase.zookeeper.quorum</name>           
                    <value>node1,node2,node3</value>
            </property>
            
            <!-- 冗余度 -->
            <property>
                    <name>dfs.replication</name>
                    <value>2</value>                              
            </property>
            
            <!-- 主节点和从节点允许的最大时间误差 -->
            <property>
                    <name>hbase.master.maxclockskew</name>                                                                                                          
                    <value>180000</value>
            </property>                                                                                                                                             
    
            <!-- zookeeper数据目录 -->
            <property>
                    <name>hbase.zookeeper.property.dataDir</name>
                    <value>/app/hbase/zookeeperData</value>
            </property>
    
            <!-- 手动配置管理web端口,默认是 16010 -->
            <property>
                    <name>hbase.master.info.port</name>
                    <value>60010</value>
            </property>
    </configuration>
    

    列出所有运行hbase的机器:修改regionservers文件

    cd /app/hbase/conf
    
    vim regionservers
    

    删除原有内容,添加如下内容:

    node1
    node2
    node3
    

    指明备用的 master 节点:backup-masters(这个文件是不存在的,需要新建)

    cd /app/hbase/conf
    
    vim backup-masters
    

    以这里为例,配置如下:

    node2
    

    HDFS 客户端配置

    进入 /app/hadoop/etc/hadoop 文件夹,修改 hadoop-env.sh 中的配置(修改PID生成的位置,node1、node2、node3都要修改)

    cd /app/hadoop/etc/hadoop
    
    vim hadoop-env.sh
    

    要被修改的内容是:

    export HADOOP_PID_DIR=${HADOOP_PID_DIR}
    export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
    

    将其路径修改为上面创建的 pids 文件夹

    export HADOOP_PID_DIR=/app/pids
    export HADOOP_SECURE_DN_PID_DIR=/app/pids
    

    修改yarn-env.sh (自定义PID生成位置,node1、node2、node3都要修改)

    cd /app/hadoop/etc/hadoop
    
    vim yarn-env.sh
    

    添加如下内容:

    export YARN_PID_DIR=/app/pids
    



    如果您在 Hadoop 集群上进行了 HDFS 客户端配置的更改,比如将副本系数 dfs.replication 设置成 5,则必须使用以下方法之一来使 HBase 知道,否则 HBase 将依旧使用默认的副本系数 3 来创建文件。

    解决方式有三种,如下面:

    将 Hadoop 配置文件的位置信息添加到 hbase-env.shHBASE_CLASSPATH 属性

    cd /app/hbase/conf
    vim hbase-env.sh
    

    配置信息如下

    export HBASE_CLASSPATH=/app/hadoop/etc/hadoop
    

    将 Hadoop 的 hdfs-site.xmlcore-site.xml 拷贝到 ${HBASE_HOME}/conf 目录下

    cd /app/hadoop/etc/hadoop
    cp core-site.xml /app/hbase-1.3.1/conf/
    cp hdfs-site.xml /app/hbase-1.3.1/conf/
    

    ${HBASE_HOME}/conf 目录下,创建hdfs-site.xmlcore-site.xml 的软链接

    cd /app/hadoop/etc/hadoop
    ln -s core-site.xml /app/hbase/conf/core-site.xml
    ln -s core-site.xml /app/hbase/conf/hdfs-site.xml
    

    按照前面配置,创建对应目录

    进入 hbase-1.3.1 文件夹,创建 zookeeperData 文件夹

    进入 app 文件夹,创建pids文件夹,赋予权限,node1、node2、node3都需要创建pids文件

    cd /app/hbase
    mkdir zookeeperData
    
    cd /app
    mkdir pids
    chown -R root:root pids
    

    安装包分发

    将 hbase-1.3.1 分发到到 node2、node3

    cd /app
    
    scp -r hbase-1.3.1 node2:/app
    scp -r hbase-1.3.1 node3:/app
    

    分别到 node2、node3 创建 hbase-1.3.1 的软链接

    cd /app
    ln -s hbase-1.3.1 hbsae
    

    启动和关闭 HBase

    HBase 的启动前需要先启动Hadoop和ZooKeeper

    1. 启动Hadoop

      node1 中输入:start-dfs.shstart-yarn.sh

    2. 启动ZooKeeper

      node1、node2、node3中都要输入:zkServer.sh start

      为了避免没启动ZooKeeper,可以查看zookeeper的启动状态:zkServer.sh status

    3. 启动HBase

      node1 中输入:start-hbase.sh


    进入和退出 HBase Shell

    1. 进入HBase Shell:hbase shell
    2. 退出HBase Shell:exit

    Web 端访问 HBase 页面:http://10.211.55.18:60010

    访问的时候,可能会有如下提示(HBase集群中Master服务挂掉了):

    The load balancer is not enabled which will eventually cause performance degradation in hbase as regions will not be distributed across all regionservers.The balancer is only expected to be disabled during rolling upgrade scenarios.

    解决办法:进入HBase Shell,输入并执行 balance_switch true ,这个时候再访问 HBase Web端,就不会有该提示了。


    关闭 HBase,在关闭 HBase之前,一定要先关闭Hadoop和ZooKeeper

    1. 关闭HBase

      node1 中输入:stop-hbase.sh

    2. 关闭ZooKeeper

      node1、node2、node3中都要输入:zkServer.sh stop

    3. 关闭Hadoop

      node1 中输入:stop-all.sh

    参考文献

    1. HBase 系列(四)—— HBase 集群环境配置
    2. HBase运维系列:Regions In Transition
    Good Good Write Bug, Day Day Up
  • 相关阅读:
    (十三)子查询
    (十二)多表查询
    MFC读写配置ini文件
    (十一)分组函数(多行函数)
    Django(二十一)组合搜索
    Django(二十)model中的 class Meta
    (十)单行函数
    (九)逻辑运算,order by,desc
    类作为成员变量
    内部类——匿名内部类
  • 原文地址:https://www.cnblogs.com/liyihua/p/14482431.html
Copyright © 2020-2023  润新知