使用CDH6集成

CDH(Cloudera's Distribution, including Apache Hadoop)提供Hadoop组件的安装、运维、监控等功能,您可以使用CDH6(表示CDH 6.X 版本)管理您的Hadoop集群。本文介绍如何将CDH6与LindormDFS集成,来替换底层HDFS存储。您可以基于CDH6和LindormDFS构建云原生存储计算分离的开源大数据系统。

前提条件

  • 请保证您的Lindorm实例和CDH6集群所在同一VPC内。

  • 请保证您的CDH6节点在Lindorm白名单中,如何添加白名单请参见设置白名单

    说明

    本文中所涉及范例使用的CDH版本为V6.3.2。LindormDFS(LDFS)支持CDH 5.13.0以上版本,其他版本请咨询技术支持

一、配置LDFS为默认的存储引擎

  1. 开通LDFS,具体步骤请参见开通指南

  2. 配置相关链接。

    1. 登入CDH6系统主页,选择配置>高级配置代码段,进入高级配置代码段页面。

      截图1

    2. 原HDFS采用HA模式(HDFS NameNode主备模式)部署,如果原HDFS非HA模式部署,请将其初始化为HA模式。

    3. 在最上面的搜索框中搜索hdfs-site.xml

    4. hdfs-site.xml的HDFS客户端高级配置代码段(安全阀)区域中,添加如下LDFS配置项,如下:

      名称

      说明

      是否必配

      dfs.client.failover.proxy.provider.{实例ID}

      org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

      主备切换策略配置

      dfs.ha.namenodes.${实例ID}

      nn1,nn2

      HA模式下主备NameNode的服务ID名称

      dfs.namenode.rpc-address.${实例ID}.nn1

      ${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020

      NameNode第一个节点RPC通信地址

      dfs.namenode.rpc-address.${实例ID}.nn2

      ${实例ID}-master2-001.lindorm.rds.aliyuncs.com:8020

      NameNode第二个节点RPC通信地址

      dfs.nameservices

      ${实例ID},nameservice1

      nameservice1为原来的HDFS的服务名称

      单击下图的按钮可以添加配置。截图1111

      说明

      其中${实例ID},需要根据实际情况进行修改。

    5. hdfs-site.xml的HDFS服务高级配置代码段(安全阀)区域中,添加如下LDFS配置项,如下:

      名称

      说明

      是否必配

      dfs.client.failover.proxy.provider.{实例ID}

      org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

      dfs.ha.namenodes.${实例ID}

      nn1,nn2

      HA模式下主备NameNode的服务ID名称

      dfs.namenode.rpc-address.${实例ID}.nn1

      ${实例ID}-master1-001.lindorm.rds.aliyuncs.com:8020

      dfs.namenode.rpc-address.${实例ID}.nn2

      ${实例ID}-master2-001.lindorm.rds.aliyuncs.com:8020

      dfs.nameservices

      ${实例ID},nameservice1

      nameservice1为原来的hdfs的服务名称

      单击下图的按钮可以添加配置。35

      说明

      其中${实例ID},需要根据实际情况进行修改。

    6. 在搜索框中搜索 core-site.xml

    7. core-site.xml 的群集范围高级配置代码段(安全阀)区域中,添加 fs.defaultFS,其值:hdfs://${实例ID} ,含义是将LDFS设置为默认的存储引擎。

    8. 单击保存更改

    9. 返回CDH6系统主页,找到HDFS,单击图标进入HDFS控制台,然后再单击操作>部署客户端配置

      截图8截图7

  3. 验证CDH6集群是否默认访问LDFS。

    1. 在CDH6集群中的任意一个节点上执行如下指令。

      $ hadoop fs -ls /
    2. 执行结果如下,表示链接配置成功。

      截图9

二 、安装Yarn服务

  1. 修改Yarn的安装脚本。

    1. 登入您准备作为ResourceManager(Yarn服务中资源的管控节点)。

    2. 执行如下的指令修改安装脚本。

      # sudo su -
      root@cdhlindorm001 /opt/cloudera/cm-agent/service $ vim /opt/cloudera/cm-agent/service/yarn/yarn.sh
        # 找到 DEFAULT_FS , 并在其下面添加如下配置信息。
        DEFAULT_FS="$3"
        DEFAULT_FS="hdfs://{实例ID}
        # 其中${实例ID},需要根据实际情况进行修改。
      说明

      该脚本是Yarn 在安装的时候,用于配置环境的脚本。

  2. 登录CDH6管理系统,单击集群名称右边的截图10,然后单击添加服务,进入安装向导界面。

    截图11

  3. 选择YRAN服务,单击继续,根据安装指南配置YARN服务,配置都可以按照默认配置。

    截图12

  4. 等服务安装完成之后,需要修改mapred-site.xml配置。

    1. 登入 CDH6 系统主页,选择配置>高级配置代码段,进入高级配置代码段页面。

    2. 在最上面的搜索框中搜索mapred-site.xml。

    3. YARN 服务 MapReduce 高级配置代码段(安全阀)中,添加如下配置项。

      配置项mapreduce.application.framework.path,其值:/user/yarn/mapreduce/mr-framework/{version}-mr- framework.tar.gz#mr-framework

      截图13

    4. 单击保存更改

  5. 配置Yarn可以分配的内存容量(因为在我们完成Spark安装之后需要通过Yarn启动程序)。

    1. 返回 CDH6 系统主页,找到YARN,单击进入Yarn控制台。

    2. 找到配置,单击进入。

      46

    3. 在最上面的搜索框中输入yarn.scheduler.maximum-allocation-mb,将其值设置为20 G(该值根据您实际的情况配置)。

      46

    4. 在最上面的搜索框中输入yarn.nodemanager.resource.memory-mb,将其值设置为20 G(该值根据您实际的情况配置)。

      47

    5. 单击保存更改

  6. 部署新配置并重启服务。

    1. 返回CDH6管理系统界面,找到YARN,单击重新部署图标,进行重新部署。

    2. 过期配置页面,单击重启过时服务

      50

    3. 重启过时服务页面,选择需要重启的服务,单击立即重启

    4. 等待服务全部重启完成,并重新部署客户端配置后,单击完成

  7. 验证hive服务是否启动成功。

    使用CDH6 Hadoop中自带的测试包hadoop-mapreduce-examples-3.0.0-cdh6.3.2.jar (版本号以客户自带的版本为准)进行测试。在CDH6中,该测试包在/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars 下。

    1. 登入CDH6任意一台机器,执行以下命令,在/tmp/randomtextwriter目录下生成128M大小的文件。

      yarn jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/hadoop-mapreduce-examples-3.0.0-cdh6.3.2.jar randomtextwriter  -D mapreduce.randomtextwriter.totalbytes=134217728  -D mapreduce.job.maps=4 -D mapreduce.job.reduces=4   /tmp/randomtextwriter

      其中hadoop-mapreduce-examples-3.1.1.3.1.4.0-315.jar为CDH6中的测试包,请根据实际情况修改。

    2. 检查任务是否已经提交到Yarn上执行。

      1. 在 CDH6任意一台机器上,执行以下命令。

        $ yarn application -list

        如果执行结果如下,表示YARN正常运行。

        截图16

      2. 检查文件是否正常生成。

        1. 在CDH6任意一台机器上,执行以下命令。

          $  hadoop fs -ls  /tmp/randomtextwriter

          如果执行结果如下,正常运行。

          截图20

三、安装HIVE服务

  1. 安装MySQL数据库,并创建用来存储hive元数据信息的数据库。

    1. 登入CDH6任意的一台机器,执行如下指令,进行安装。

      # 切换到 root 
      sudo su -
      # 下载 MySQL的rpm 源
      root@cdhlindorm001 ~/tool $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
      #安装 MySQL server和MySQL客户端
      root@cdhlindorm001 ~/tool $ yum install mysql-server mysql -y

    2. 启动MySQL服务,并且创建用户,设置用户的权限。

      1. 执行如下指令进行操作。

        # 启动 MySQL服务
        root@cdhlindorm001 ~/tool $ systemctl start mysqld.service
        # 登入MySQL终端,创建用户,并且设置权限
        root@cdhlindorm001 ~/tool $ mysql
        Welcome to the MySQL monitor.  Commands end with ; or \g.
        Your MySQL connection id is 2
        Server version: 5.6.50 MySQL Community Server (GPL)
        
        Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
        
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
        
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
        
        mysql> CREATE USER 'hive'@'%' IDENTIFIED BY '123456';
        Query OK, 0 rows affected (0.00 sec)
        mysql> create DATABASE hive;
        Query OK, 1 row affected (0.00 sec)
        mysql> use mysql;
        Query OK, 0 rows affected (0.00 sec)
        mysql> delete from user;
        Query OK, 9 rows affected (0.00 sec)
        mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
        # 刷新权限
        mysql> flush privileges;
        Query OK, 0 rows affected (0.01 sec)
      2. 验证MySQL是否配置成功。

        # 登入成功,配置完成
        root@cdhlindorm001 ~/tool $ mysql -uroot -p
        Warning: Using a password on the command line interface can be insecure.
        Welcome to the MySQL monitor.  Commands end with ; or \g.
        Your MySQL connection id is 10
        Server version: 5.6.50 MySQL Community Server (GPL)
        
        Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
        
        Oracle is a registered trademark of Oracle Corporation and/or its
        affiliates. Other names may be trademarks of their respective
        owners.
        
        Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  2. 登录CDH6管理系统,单击集群名称右边的截图10,然后单击添加服务,进入安装向导界面。

  3. 选择 HIVE 服务,单击继续,根据安装指南配置HIVE服务,根据向导配置对应的参数。

    截图21

    1. 配置数据库信息。

      截图22

    2. 开始安装,并且等待安装完成。

      截图23

  4. 验证是否启动成功。

    1. 登入CDH6任意一台机器上,执行以下命令。

      # 登入 hive 客户端
      [root@cdhlindorm001 ~]# hive
      WARNING: Use "yarn jar" to launch YARN applications.
      SLF4J: Class path contains multiple SLF4J bindings.
      SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
      SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
      SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
      SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
      
      Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/hive-common-2.1.1-cdh6.3.2.jar!/hive-log4j2.properties Async: false
      
      WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
      hive> create table foo (id int, name string);
      OK
      Time taken: 1.409 seconds
      hive> insert into table foo select * from (select 12,"xyz")a;
      Query ID = root_20201126162112_59e6a5fc-99c2-45a4-bf84-73c16c39de8a
      Total jobs = 3
      Launching Job 1 out of 3
      Number of reduce tasks is set to 0 since there's no reduce operator
      20/11/26 16:21:12 INFO client.RMProxy: Connecting to ResourceManager at cdhlindorm001/192.168.0.218:8032
      20/11/26 16:21:13 INFO client.RMProxy: Connecting to ResourceManager at cdhlindorm001/192.168.0.218:8032
      Starting Job = job_1606364936355_0003, Tracking URL = http://cdhlindorm001:8088/proxy/application_1606364936355_0003/
      Kill Command = /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop/bin/hadoop job  -kill job_1606364936355_0003
      Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
      2020-11-26 16:21:20,758 Stage-1 map = 0%,  reduce = 0%
      2020-11-26 16:21:25,864 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.17 sec
      MapReduce Total cumulative CPU time: 1 seconds 170 msec
      Ended Job = job_1606364936355_0003
      Stage-4 is selected by condition resolver.
      Stage-3 is filtered out by condition resolver.
      Stage-5 is filtered out by condition resolver.
      Moving data to directory hdfs://ld-xxxxxxxxxxx/user/hive/warehouse/foo/.hive-staging_hive_2020-11-26_16-21-12_133_7009525880995260840-1/-ext-10000
      Loading data to table default.foo
      MapReduce Jobs Launched:
      Stage-Stage-1: Map: 1   Cumulative CPU: 1.17 sec   HDFS Read: 5011 HDFS Write: 74 HDFS EC Read: 0 SUCCESS
      Total MapReduce CPU Time Spent: 1 seconds 170 msec
      OK
      Time taken: 15.429 seconds
    2. 通过Hive的终端,查询写入的数据,如果正确查询出数据,表示Hive安装完成。

      hive> select * from foo;
      OK
      12 xyz
      Time taken: 0.091 seconds, Fetched: 1 row(s)
      hive>
    3. 查看文件是否正常生成 。

      1. 通过下面的执行,查询文件信息。

        [root@cdhlindorm001 ~]# hadoop fs -ls /user/hive/warehouse/foo
      2. 如果结果如下图,表示Hive对接LDFS正常。

        截图25

四 、 安装HBASE服务

  1. 登录CDH6管理系统,单击集群名称右边的截图10,然后单击添加服务,进入安装向导界面。

    27

  2. 选择HBase服务,单击继续,根据安装指南配置HBase服务,配置都可以按照默认配置。

    1. 开始安装。

      截图30

    2. 出现下面的截图,表示安装成功,单击完成。

      31

  3. 修改 hbase-site.xml 配置。

    1. 在CDH6 系统主页,选择配置>高级配置代码段,进入高级配置代码段页面。

    2. 在最上面的搜索框中搜索hbase-site.xml。

    3. hbase-site.xml 的HBase服务高级配置代码段(安全阀)hbase-site.xml 的 HBase 客户端高级配置代码段(安全阀)中,都要添加如下配置项。

      1. 配置项hbase.rootdir,其值:/hbase。

      2. 配置项hbase.unsafe.stream.capability.enforce,其值:false。

        32

      3. 单击保存更改

  4. 部署新配置并启动服务。

    1. 返回CDH6管理系统界面,找到YARN,单击重新部署图标,进行重新部署。

      36

    2. 过期配置页面,单击重启过时服务

    3. 重启过时服务页面,选择需要重启的服务,单击立即重启

    4. 等待服务全部重启完成,并重新部署客户端配置后,单击完成

  5. 验证 HBase 是否运行正常,登入CDH6任意一台机器执行下面的命令。

    1. 执行以下命令进入hbase Shell命令界面。

      [root@cdhlindorm001 ~]# hbase shell
      HBase Shell
      Use "help" to get list of supported commands.
      Use "exit" to quit this interactive shell.
      For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
      Version 2.1.0-cdh6.3.2, rUnknown, Fri Nov  8 05:44:07 PST 2019
      Took 0.0009 seconds
      hbase(main):001:0>
    2. 在HBase中创建测试表,并且写入一些数据。

      [root@cdhlindorm001 ~]# hbase shell
      HBase Shell
      Use "help" to get list of supported commands.
      Use "exit" to quit this interactive shell.
      For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell
      Version 2.1.0-cdh6.3.2, rUnknown, Fri Nov  8 05:44:07 PST 2019
      Took 0.0009 seconds
      hbase(main):001:0> create 'hbase_test','info'
      Created table hbase_test
      Took 1.0815 seconds
      => Hbase::Table - hbase_test
      hbase(main):002:0> put 'hbase_test','1', 'info:name' ,'Sariel'
      Took 0.1233 seconds
      hbase(main):003:0>  put 'hbase_test','1', 'info:age' ,'22'
      Took 0.0089 seconds
      hbase(main):004:0> put 'hbase_test','1', 'info:industry' ,'IT'
      Took 0.0115 seconds

    3. 执行如下指令查询刚刚写入的数据,验证HBase是否正常。

      hbase(main): 005:0> scan 'hbase_test'

      如果执行结果如下,表示Hbase 服务正常。

      36

    4. 执行以下命令查看LDFS的/hbase/data/default 路径,如果/hbase/data/default 路径下有hbase_test目录,则证明配置成功。

      # hadoop fs -ls /hbase/data/default

      41

    重要

    如果用户在部署中发现beeline或者hiveserver2无法正常服务,报不能被代理错误,这是需要开启LDFS的代理模式, 具体的方式请提交工单或者联系值班技术支持协助完成。

五 、安装Spark服务

  1. 登录CDH6管理系统,单击集群名称右边的截图10,然后单击添加服务,进入安装向导界面。

  2. 选择Spark服务,单击继续, 根据安装指南配置Spark服务,配置都可以按照默认配置。

    1. 选择依赖, 根据您实际的情况进行选择。

      43

    2. 开始安装。

      45

    3. 安装完成。

      46

  3. 启动服务(这是因为安装完成之后,Spark并没有启动)。

    1. 返回CDH6管理系统界面,找到 Spark

    2. 展开下拉列表,单击启动

      53

  4. 验证Spark启动是否成功。

    1. 登入CDH 6任意一台机器,使用spark测试包从LDFS上读取测试文件。

      [root@cdhlindorm001 ~]# spark-submit   --master yarn --executor-memory 900M --executor-cores 2  --class org.apache.spark.examples.DFSReadWriteTest  /opt/cloudera/parcels/CDH/jars/spark-examples_2.11-2.4.0-cdh6.3.2.jar   /etc/profile /output
    2. 如果回显信息类似如下图所示,执行成功。

      56

    3. 执行下面的指令,查看生成的结果数据。

      [root@cdhlindorm001 ~]# hadoop fs -ls /output/dfs_read_write_test

      如果执行结果如下,表示Spark启动没有问题。

说明

根据业务场景如果配置复杂可能有些步骤不成功,请提交工单或者联系值班。