• HBase搭建


    HBase是大数据领域主流的开源数据库,应用较多。本报告从实际应用角度出发,主要阐述HBase分布式搭建的方法步骤和相关接口的开发情况。

     

    1. 分布式HBase

    在实际使用环境中,HBase通常分布式搭建于多台主机之上。在真正搭建HBase之前,需要先在多个服务器主机间建立好分布式文件管理系统(HDFS),作为HBase的安装环境。此外,为了协调好HBase在各个主机间的任务分配,需要安装配置Zookeeper。总之,安装配置好HDFSZookeeper是正确搭建HBase的前提。在本研究中,创建了三台虚拟机作为服务器,实现HBase的分布式部署,虚拟机的系统均为CentOS 6.9

     

    1.1. 准备工作

    1.1.1. 安装包的兼容性

    在部署分布式HBase的过程中,需要用到JDKHadoop(HDFS)ZooKeeperHBase四个安装包。需要强调的是HBaseJDKHadoop之间存在较多的兼容性要求,如果版本选择不合适,将出现进程无法启动或崩溃等现象。具体的版本搭配参考官网说明:http://hbase.apache.org/book.html#basic.prerequisites  

    本研究中采用的安装包版本分别为:

     

     

    1.1.2. 集群的IP配置

    将三台虚拟机的IP均设为静态IP。在设定好主机名后,分别编辑三台主机上的文件/etc/hosts,配置共同的IP和主机名的对应关系,如:

     

     

     

    1.1.3. 文件权限管理

    可以在三台主机上创建相同的用户组和用户,便于管理操作权限。本研究创建了Hadoop组中的Hadoop用户。利用chown命令将各个安装包的owner改为hadoop

     

    1.1.4. 配置SSH

    在主节点master上生成秘钥,再将秘钥信息复制保存到两个从节点的~/.ssh目录中。配置SSH的目的是使主节点能够免密登录到两个从节点上完成操作。

     

     

    1.1.5. 安装JDK

    为了方便演示,将所有的安装包安装在/hadoop/目录下。在安装完JDK后,需要为用户hadoop设置java环境变量。具体步骤如图:

     

     

    1.1.6. 同步

    将安装好的JDK同步到其他两个节点的/hadoop路径中,同步命令为:

    rsync  -avz  /hadoop/jdk1.8.0_211-amd64  slave1:/hadoop/

    JDK同步完成后,同样要设置相应节点上的.bash_profile环境变量。后续其他软件在主节点安装后,都需要用同样的方法同步到两个从节点上。

     

    1.2. HDFS的搭建

    1.2.1. 解压安装

    官网下载的安装包为bin类型的压缩包hadoop-2.8.5.tar.gz。分别采用gunziptar命令将压缩包解压到/hadoop/路径中。

     

    1.2.2. 配置java环境变量

    /hadoop/hadoop-2.8.5/etc/hadoop路径下找到hadoop-env.sh文件,编辑成:

     

     

    1.2.3. 配置hadoop运行参数

    1.2.3.1. /hadoop-2.8.5/etc/hadoop/core-site.xml

     

    1.2.3.2. /hadoop-2.8.5/etc/hadoop/hdfs-site.xml

     

    图中的namenodedatadata为自行创建的文件夹用来存放相应数据。图中的2表示允许HDFS在两个从节点上备份。最后的参数设置为true,用来开启HDFSweb接口。

    1.2.3.3. /hadoop-2.8.5/etc/hadoop/slaves

     

    输入两个从节点的节点名,以实现分布式部署。

     

    1.2.4. 同步

    利用rsync命令,将安装配置好的/hadoop/hadoop-2.8.5/文件夹整体分发到两个从节点的/hadoop/路径下。

     

    1.2.5. 格式化HDFSnamenode

    在主节点的/hadoop/hadoop-2.8.5路径下,执行命令bin/hdfs namenode -format

     

    1.2.6. 检查安装结果

    在主节点的/hadoop/hadoop-2.8.5路径下执行命令sbin/start-dfs.sh。然后分别在三个主机上执行jps命令,如果有如下进程,证明HDFS安装配置成功。

     

     

     

     

     

     

    1.3. Zookeeper的配置

    1.3.1. 解压安装

    同样采用解压安装的方式,安装后的路径为/hadoop/zookeeper-3.4.14

     

    1.3.2. 配置参数

    1.3.2.1. 设置data路径

    /hadoop/zookeeper-3.4.14/conf路径下的zoo_sample.cfg复制到同路径下,并且名称改为zoo.cfg。然后编辑zoo.cfg,需要修改的参数如图:

     

    图中的dataDir修改为自己创建的zkdata文件夹路径,最后added的内容配置了分布式部署下三台主机的信息。

     

    1.3.2.2. myid

    dataDir=/hadoop/zookeeper-3.4.14/zkdata路径下创建myid文件用于设定本机在zookeeper集群中的IP。主机mastermyid应当设置为0,与zoo.cfg中最后设置的server.0保持一致。注意:各个主机的myid一定要与zoo.cfg最后配置的信息保持一致,否则zookeeper无法正常工作。

     

    1.3.3. 同步

    同样使用rsync 命令将主机master上的/hadoop/zookeeper-3.4.14/同步到两个从节点上,并将myid内容分别改成12

     

    1.3.4. 验证安装

    cd/hadoop/zookeeper-3.4.14/路径下,在三个节点上分别执行命令bin/zkServer.sh start。待三节点都启动完成后,执行命令bin/zkServer.sh status,如果看到如下状态,则表示安装运行成功。

     

     

    1.4. HBase的搭建

    1.4.1. 解压安装

    同样采用解压安装的方式,安装后的路径为/hadoop/hbase-2.0.5

     

    1.4.2. 参数配置

    1.4.2.1. hbase-env.sh

    cd/hadoop/hbase-2.0.5/conf路径下,编辑hbase-env.sh。需要编辑的内容为:

     

    其中java路径设置为实际安装路径。将HBASE_MANAGES_ZK设置为false是为了防止HBase内置的zookeeper启动,造成冲突,导致HBase崩溃。

     

    1.4.2.2. hbase-site.xml

    进一步编辑/hadoop/hbase-2.0.5/conf/hbase-site.xml,添加4个属性,如图所示:

     

    第一个属性设置hbase的根路径,设置到HDFS之上。第二个属性为hbase配置zookeeper。第三个属性设置hbase为分布式部署。第四个属性设置zookeeper运行过程中的数据保存路径。

     

    1.4.2.3. regionservers

    编辑/hadoop/hbase-2.0.5/conf/regionservers,将两个从节点的主机名添加进去。当hbase启动后,两个从节点上将运行regionserver进程。

     

     

    1.4.3. 同步

    rsync命令,将主节点上的/hadoop/hbase-2.0.5/整体同步到两个从节点上。

     

    1.4.4. 启动

    在启动HBase之前需要先启动HDFSzookeeper。其中HDFS只需在主节点上执行命令sbin/start-dfs.sh,相关进程自动分布式部署到各个节点上。Zookeeper需要在三个节点上分别执行命令bin/zkServer.sh start来启动。

    cd到主节点的/hadoop/hbase-2.0.5/路径下,执行命令bin/start-hbase.sh,相关进程自动分布式部署到各个节点上。启动后,可用jps命令来查看各个节点上的进程,应该包括如下进程:

        

     

     

     

    1.4.5. Shell验证

    可以执行命令bin/hbase shell来操作hbase。具体的shell指令参考官网:

    http://hbase.apache.org/book.html#quickstart

     

    1.4.6. 特别注意

    需要通过service iptables stop命令来关闭各个节点的防火墙,确保HBase正常运行以及可以通过Web UI访问HBaseHDFS

     

    1.5. 主要参考资料

    http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

    http://hbase.apache.org/book.html#getting_started

    http://www.jikexueyuan.com/course/1802.html

     

     

     

     

     

    1. 接口开发

    本研究重点研究了如何通过C++来实现HBaseHDFS的接口调用。HBase提供了RESTthrift通用接口。HDFS提供了C APIREST API。本研究针对REST API进行了初步开发,采用了第三方的libcurl库来实现http通信,同时适用于HBaseHDFS的接口调用。

     

    2.1. 配置libcurl

    将官网下载的libcurl.zip解压,将压缩包内的bin/路径下.dll文件和include/curl/路径中的.h文件都复制到demo工程路径下。将压缩包内的lib/路径下的libcurl.lib文件也复制到demo工程路径下,并且添加到链接器的依赖项中,如图:

     

     

    2.2. HTTP指令

    http中的基本操作主要包括GETPOSTPUT等指令,在类CREST_API中实现了这些指令功能,具体参考demo程序。

     

    2.3 用法举例

    要想通过RESTHBase进行交互,需要先开启HBaserest服务进程。cd/hadoop/hbase-2.0.5/路径后,执行命令:bin/hbase rest start。此时,服务器默认开启了8080端口来进行通信。也可自己指定端口号,具体方法见官网文档:

    http://hbase.apache.org/book.html#_rest

    rest服务开启后,可以参照官方文档中的接口描述,来组织代码。比如:

     

    要查询正在运行的HBase版本,可以在linux直接上执行curl命令,也可以在demo程序中作如下配置:

     

    运行demo,可得结果如下,显示HBase版本为2.0.5

     

    总之,先参考官方文档中对于REST API的描述,再在demo程序中修改配置相应参数值,就可实现接口调用。

     

    HBase官方接口文档:

    http://hbase.apache.org/book.html#_rest

    HDFS官方接口文档:

    http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/WebHDFS.html

    Libcurl库中函数的用法:

    https://curl.haxx.se/libcurl/c/libcurl-tutorial.html

  • 相关阅读:
    Java Spring AOP用法
    Spring IOC的简单实现
    随机数
    Java 正则表达式
    日期格式转换
    maven settings.xml详解
    JSP与Servlet的关系
    EL表达式学习
    FreeMarker学习2
    FreeMarker学习
  • 原文地址:https://www.cnblogs.com/wjcoding/p/11805389.html
Copyright © 2020-2023  润新知