Table of Contents:

2.3. 安装 Zookeeper

集群规划
主机名 是否有 Zookeeper

cdh01

cdh02

cdh03

Step 1: 安装 Zookeeper
  • 和以往不同, CDH 版本的 Zookeeper 是经过定制的, 所以可以直接通过 Yum 来安装, 使用刚才所搭建的 Yum 仓库, 在所有节点上执行如下命令

    yum install -y zookeeper zookeeper-server
  • CDH 版本的所有工具都会遵循 Linux 的习惯放置 Log 和 Data, 所以需要先创建 Zookeeper 的数据目录, 并且所有者指定给 Zookeeper 所使用的用户, 如下命令在所有节点执行

    mkdir -p /var/lib/zookeeper
    chown -R zookeeper /var/lib/zookeeper/
Step 2: 配置 Zookeeper
  • 在使用 Apache 版本的 Zookeeper 时, 我们需要自己创建 Myid 文件, 现在使用 CDH 版本的 Zookeeper 已经为我们提供了对应的 Shell 程序, 在所有节点执行如下命令, 注意 myid 参数, 在不同节点要修改 myid

    service zookeeper-server init --myid=1
  • Zookeeper 想要组成集群的话, 必须要修改配置文件, 配置整个集群的服务器地址, CDH 版本的 Zookeeper 默认配置文件在 /etc/zookeeper/conf/zoo.cfg, 修改这个文件增加服务器地址, 在所有节点上修改 Zookeeper 的配置文件增加如下

    server.1=cdh01:2888:3888
    server.2=cdh02:2888:3888
    server.3=cdh03:2888:3888
Step 3: 在所有节点启动 Zookeeper 并检查
  • 启动 CDH 版本的 Zookeeper 也是通过 Service 的方式

    service zookeeper-server start
  • 因为 Zookeeper 的搭建比较复杂, 启动完成后可以通过 CDH 提供的命令, 或者使用 Zookeeper 的四字命令来查看是否状态正常

    zookeeper-server status
    echo mntr | nc cdh01 2181 //查看cdh01上的zookeeper的状态统计,可以在cdh01,cdh02或cdh03上执行该命令
    echo stat | nc cdh03 2181
  CDH 版本的组件有一个特点, 默认情况下配置文件在 /etc 对应目录, 日志在 /var/log 对应目录, 数据在 /var/lib 对应目录, 例如说 Zookeeper, 配置文件放在 /etc/zookeeper 中, 日志在 /var/log/zookeeper中, 其它的组件也遵循这样的规律

2.4. 安装 Hadoop

导读
  1. 安装软件包

  2. 配置 HDFS

  3. 配置 Yarn 和 MapReduce

集群规划
主机名 职责

cdh01

Yarn ResourceManagerHDFS NameNodeHDFS SecondaryNamenodeMapReduce HistroyServerHadoop Clients

cdh02

Yarn NodeManagerHDFS DataNode

cdh03

Yarn NodeManagerHDFS DataNode

Step 1: 安装 Hadoop 软件包

CDH 版本的 Hadoop 安装主要思路如下

  1. 下载软件包

  2. 配置各个组件

  3. 启动各个组件

所以第一步, 应该先安装 Hadoop 的软件包, 只有软件包已经下载, 才能进行相应组件的配置, 根据集群规划进行安装

根据集群规划, cdh01 中应该如下安装软件包

yum -y install hadoop hadoop-yarn-resourcemanager hadoop-yarn-nodemanager hadoop-hdfs-secondarynamenode hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-mapreduce hadoop-mapreduce-historyserver hadoop-client

根据集群规划, cdh02 和 cdh03 中应该如下安装软件包

yum -y install hadoop hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce hadoop-client
Step 2: 配置 HDFS
  1. 配置文件的思路

    在 CDH 版本的组件中, 配置文件是可以动态变更的

    本质上, CDH 各组件的配置文件几乎都分布在 /etc 目录中, 例如 Hadoop 的配置文件就在 /etc/hadoop/conf 中, 这个 conf 目录是 Hadoop 当前所使用的配置文件目录, 但是这个目录其实是一个软链接, 当希望更改配置的时候, 只需要在 /etc/hadoop 中创建一个新的目录, 然后将 conf 指向这个新目录即可

    但是因为各个组件的 conf 目录对应了多个目录, 还需要修改其指向, 管理起来很麻烦, 所以 CDH 使用了 Linux 一个非常厉害的功能, 可以配置一个目录可以指向的多个目录, 同时可以根据优先级确定某个目录指向谁, 这个工具叫做 alternatives, 有如下几个常见操作

    • alternatives --install 讲一个新目录关联进来, 并指定其 ID 和优先级

    • alternatives --set 设置其指向哪个目录

    • alternatives --display 展示其指向哪个目录

  2. 在所有节点中复制原始配置文件并生成新的配置目录, 让 Hadoop 使用使用新的配置目录

    这样做的目的是尽可能的保留原始配置文件, 以便日后恢复, 所以在所有节点中执行如下操作

    • 创建新的配置目录

      cp -r /etc/hadoop/conf.empty /etc/hadoop/conf.itcast
    • 链接过去, 让 Hadoop 读取新的目录

      # 关联新的目录和 conf
      alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.itcast 50
      # 设置指向
      alternatives --set hadoop-conf /etc/hadoop/conf.itcast
      # 显式当前指向
      alternatives --display hadoop-conf
  3. 在所有节点的新配置目录 /etc/hadoop/conf.itcast 中, 修改配置文件

    • vi /etc/hadoop/conf.itcast/core-site.xml

      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://cdh01:8020</value>
      </property>
    • vi /etc/hadoop/conf.itcast/hdfs-site.xml

      <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
      </property>
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///var/lib/hadoop-hdfs/cache/hdfs/dfs/data</value>
      </property>
      <property>
      <name>dfs.permissions.superusergroup</name>
      <value>hadoop</value>
      </property>
      <property>
      <name>dfs.namenode.http-address</name>
      <value>cdh01:50070</value>
      </property>
      <property>
      <name>dfs.permissions.enabled</name>
      <value>false</value>
      </property>
  4. 在所有节点中, 创建配置文件指定的 HDFS 的 NameNode 和 DataNode 存放数据的目录, 并处理权限

    • 如下创建所需要的目录

      mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
      mkdir -p /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
    • 因为 CDH 比较特殊, 其严格按照 Linux 用户来管理和启动各个服务, 所以 HDFS 启动的时候使用的是 hdfs 用户组下的用户 hdfs, 需要创建文件后进行权限配置

      chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
      chown -R hdfs:hdfs /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
      chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
      chmod 700 /var/lib/hadoop-hdfs/cache/hdfs/dfs/data
  5. 格式化 NameNode, 当然, 这个命令只能在 cdh01 上执行, 只能执行一次

    sudo -u hdfs hdfs namenode -format
  6. 启动 HDFS

    1. cdh01 上和 HDFS 有关的服务有 NameNodeSecondaryNameNode, 使用如下命令启动这两个组件

      service hadoop-hdfs-namenode start
      service hadoop-hdfs-secondarynamenode start
    2. 在 cdh02 和 cdh03 上执行如下命令

      service hadoop-hdfs-datanode start
Step 3: 配置 Yarn 和 MapReduce

前面已经完成配置目录创建等一系列任务了, 所以在配置 Yarn 的时候, 只需要去配置以下配置文件即可

  1. 在所有节点上, 配置 Yarn 和 MapReduce

    修改 Yarn 和 MapReduce 配置文件

    • vi /etc/hadoop/conf.itcast/mapred-site.xml

      <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      </property>
      <property>
      <name>mapreduce.jobhistory.address</name>
      <value>cdh01:10020</value>
      </property>
      <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>cdh01:19888</value>
      </property>
      <property>
      <name>hadoop.proxyuser.mapred.groups</name>
      <value>*</value>
      </property>
      <property>
      <name>hadoop.proxyuser.mapred.hosts</name>
      <value>*</value>
      </property>
      <property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user</value>
      </property>
    • vi /etc/hadoop/conf.itcast/yarn-site.xml

      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>cdh01</value>
      </property>
      <property>
      <name>yarn.application.classpath</name>
      <value>
      $HADOOP_CONF_DIR,
      $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
      $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
      $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
      $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
      </value>
      </property>
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      <property>
      <name>yarn.nodemanager.local-dirs</name>
      <value>file:///var/lib/hadoop-yarn/cache/${user.name}/nm-local-dir</value>
      </property>
      <property>
      <name>yarn.nodemanager.log-dirs</name>
      <value>file:///var/log/hadoop-yarn/containers</value>
      </property>
      <property>
      <name>yarn.log.aggregation-enable</name>
      <value>true</value>
      </property>
      <property>
      <name>yarn.nodemanager.remote-app-log-dir</name>
      <value>hdfs:///var/log/hadoop-yarn/apps</value>
      </property>
  2. 在所有节点上, 创建配置文件指定的存放数据的目录

    • 创建 Yarn 所需要的数据目录

      mkdir -p /var/lib/hadoop-yarn/cache
      mkdir -p /var/log/hadoop-yarn/containers
      mkdir -p /var/log/hadoop-yarn/apps
    • 赋予 Yarn 用户这些目录的权限

      chown -R yarn:yarn /var/lib/hadoop-yarn/cache /var/log/hadoop-yarn/containers /var/log/hadoop-yarn/apps
  3. 为 MapReduce 准备 HDFS 上的目录, 因为是操作 HDFS, 只需要在一个节点执行即可

    大致上是需要两种文件夹, 一种用做于缓存, 一种是用户目录

    • 为 MapReduce 缓存目录赋权

      sudo -u hdfs hadoop fs -mkdir /tmp
      sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
      sudo -u hdfs hadoop fs -mkdir -p /user/history
      sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
      sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history
    • 为 MapReduce 创建用户目录

      sudo -u hdfs hadoop fs -mkdir /user/$USER
      sudo -u hdfs hadoop fs -chown $USER /user/$USER
  4. 启动 Yarn

    • 在 cdh01 上启动 ResourceManager 和 HistoryServer

      service hadoop-yarn-resourcemanager start
      service hadoop-mapreduce-historyserver start
    • 在 cdh02 和 cdh03 上启动 NodeManager

      service hadoop-yarn-nodemanager start

2.4. 安装 MySQL

导读

安装 MySQL 有很多方式, 可以直接准备压缩包上传解压安装, 也可以通过 Yum 来安装, 从方便和是否主流两个角度来看, 通过 Yum 来安装会比较舒服, MySQL 默认是单机的, 所以在一个主机上安装即可, 我们选择在 cdh01 上安装, 安装大致就是两个步骤

  1. 安装

  2. 配置

Step 1: 安装

因为要从 Yum 安装, 但是默认的 Yum 源是没有 MySQL 的, 需要导入 Oracle 的源, 然后再安装

  1. 下载 Yum 源配置

    wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
    rpm -ivh mysql-community-release-el6-5.noarch.rpm
  2. 安装 MySQL

    yum install -y mysql-server
Step 2: 启动和配置

现在 MySQL 的安全等级默认很高, 所以要通过一些特殊的方式来进行密码设置, 在启动 MySQL 以后要单独的进行配置

  1. 启动 MySQL

    service mysqld start
  2. 通过 MySQL 提供的工具, 设置 root 密码

    mysql_secure_installation

2.5. 安装 Hive

导读

因为 Hive 需要使用 MySQL 作为元数据库, 所以需要在 MySQL 为 Hive 创建用户, 创建对应的表

  1. 安装 Hive 软件包

  2. 在 MySQL 中增加 Hive 用户

  3. 配置 Hive

  4. 初始化 Hive 在 MySQL 中的表结构

  5. 启动 Hive

因为我们并不需要 Hive 的 HA, 所以在单机部署 Hive 即可

Step 1: 安装 Hive 软件包
  • 安装 Hive 依然使用 CDH 的 Yum 仓库

yum install -y hive hive-metastore hive-server2
  • 如果想要 Hive 使用 MySQL 作为元数据库, 那需要给 Hive 一个 MySQL 的 JDBC 包

    yum install -y mysql-connector-java
    ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
Step 2MySQL 中增加 Hive 用户
  • 进入 MySQL

    mysql -u root -p
  • 为 Hive 创建数据库

    CREATE DATABASE metastore;
    USE metastore;
  • 创建 Hive 用户

    CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
  • 为 Hive 用户赋权

    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'%';
    GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'%';
    FLUSH PRIVILEGES;
Step 3: 配置 Hive

在启动 Hive 之前, 要配置 Hive 一些参数, 例如使用 MySQL 作为数据库之类的配置

Hive 的配置文件在 /etc/hive/conf/hive-site.xml, 修改它为如下内容

<!-- /usr/lib/hive/conf/hive-site.xml -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://cdh01/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://cdh01:9083</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>
<property>
<name>hive.support.concurrency</name>
<description>Enable Hive's Table Lock Manager Service</description>
<value>true</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<property>
<name>hive.zookeeper.quorum</name>
<value>cdh01</value>
</property>
Step 4: 初始化表结构

使用 Hive 之前, MySQL 中还没有任何内容, 所以需要先为 Hive 初始化数据库, 创建必备的表和模式. Hive 提供了方便的工具, 提供 MySQL 的连接信息, 即可帮助我们创建对应的表

/usr/lib/hive/bin/schematool -dbType mysql -initSchema -passWord hive -userName hive -url jdbc:mysql://cdh01/metastore
Step 5: 启动 Hive

默认版本的 Hive 只提供了一个 Shell 命令, 通过这一个单独的 Shell 命令以指定参数的形式启动服务, 但是 CDH 版本将 Hive 抽取为两个独立服务, 方便通过服务的形式启动 Hivehive-metastore 是元数据库, hive-server2 是对外提供连接的服务

service hive-metastore start
service hive-server2 start

通过 beeline 可以连接 Hive 验证是否启动成功, 启动 beeline 后, 通过如下字符串连接 Hive

!connect jdbc:hive2://cdh01:10000 username password org.apache.hive.jdbc.HiveDriver

2.6. 安装 Kudu

导读

安装 Kudu 依然使用我们已经配置好的 Yum 仓库来进行, 整体步骤非常简单, 但是安装上分为 Master 和 Tablet server

  1. 安装 Master server

    1. 安装软件包

    2. 配置

    3. 启动

  2. 安装 Tablet server

    1. 安装软件包

    2. 配置

    3. 启动

集群规划
节点 职责

cdh01

Master server

cdh02

Tablet server

cdh03

Tablet server

Step 1: 安装 Master server 的软件包

根据集群规划, 尽量让 cdh01 少一些负载, 所以只在 cdh01 上安装 Master server, 命令如下

yum install -y kudu kudu-master kudu-client0 kudu-client-devel
Step 2: 配置 Master server

Kudu 的 Master server 没有太多可以配置的项目, 默认的话日志和数据都会写入到 /var 目录下, 只需要修改一下 BlockManager 的方式即可, 在虚拟机上使用 Log 方式可能会带来一些问题, 改为 File 方式:

vim /etc/kudu/conf/master.gflagfile

光标到最后一行,在最后面添加上:   --block_manager=file

但是有一点需要注意, 一定确保 ntp 服务是开启的, 可以使用 ntpstat 来查看, 因为 Kudu 对时间同步的要求非常高, ntp 必须可以自动同步

# 查看时间是否是同步状态
ntpstat
Step 3: 运行 Master server
  • 运行 Master server

    service kudu-master start
  • 查看 Web ui 确认 Master server 已经启动

    http://cdh01:8051/
Step 4: 安装 Tablet server 的软件包

根据集群规划, 在 cdh02cdh03 中安装 Tablet server, 负责更为繁重的工作

yum install -y kudu kudu-tserver kudu-client0 kudu-client-devel
Step 5: 配置 Tablet server

Master server 相对来说没什么需要配置的, 也无须知道各个 Tablet server 的位置, 但是对于 Tablet server 来说, 必须配置 Master server 的位置, 因为一般都是从向主注册自己

在 cdh02cdh03 修改 /etc/kudu/conf/tserver.gflagfile 为如下内容, 如果有多个 Master server 实例, 用逗号分隔地址即可

--tserver_master_addrs=cdh01:7051

同时 Tablet server 也需要设置 BlockManager

--block_manager=file
Step 6: 运行 Tablet server
  • 启动

    service kudu-tserver start
  • 通过 Web ui 查看是否已经启动成功

    http://cdh02:8050/

注意:

# kudu-master's RPC port is 7051, its http port is 8051
# kudu-tserver's RPC port is 7050, its http port is 8050

2.7. 安装 Impala

导读

Kudu 没有 SQL 解析引擎, 因为 Cloudera 准备使用 Impala 作为 Kudu 的 SQL 引擎, 所以既然使用 Kudu 了, Impala 几乎也是必不可少的, 安装 Impala 之前, 先了解以下 Impala 中有哪些服务

服务 作用

Catalog

Impala 的元信息仓库, 但是不同的是这个 Catalog 强依赖 Hive 的 MetaStore, 会从 Hive 处获取元信息

StateStore

Impala 的协调节点, 负责异常恢复

ImpalaServer

Impala 是 MPP 架构, 这是 Impala 处理数据的组件, 会读取 HDFS, 所以一般和 DataNode 部署在一起, 提升性能, 每个 DataNode 配一个 ImpalaServer

所以, cdh01 上应该有 Catalog 和 StateStore, 而不应该有 ImpalaServer, 因为 cdh01 中没有 DataNode

  1. 安装 cdh01 中的软件包

  2. 安装其它节点中所需的软件包

  3. 对所有节点进行配置

  4. 启动

集群规划
节点 职责

cdh01

impala-state-storeimpala-catalog

cdh02

impala-server

cdh03

impala-server

Step 1: 安装软件包
  • 安装主节点 cdh01 所需要的软件包

    yum install -y impala impala-state-store impala-catalog impala-shell
  • 安装其它节点所需要的软件包

    yum install -y impala impala-server
Step 2: 针对所有节点进行配置
  • 软链接 Impala 所需要的 Hadoop 配置文件, 和 Hive 的配置文件

    Impala 需要访问 Hive 的 MetaStore, 所以需要 hive-site.xml 来读取其位置

    Impala 需要访问 HDFS, 所以需要读取 hdfs-site.xml 来获取访问信息, 同时也需要读取 core-site.xml 获取一些信息

    ln -s /etc/hadoop/conf/core-site.xml /etc/impala/conf/core-site.xml
    ln -s /etc/hadoop/conf/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
    ln -s /etc/hive/conf/hive-site.xml /etc/impala/conf/hive-site.xml
  • 配置 Impala 的主服务位置, 以供 ImpalaServer(Impalad) 访问, 修改 Impala 的默认配置文件 /etc/default/impala, 3个节点都要修改:
    (/etc/default/目录下, 往往放置 CDH 版本中各组件的默认的配置文件)

    IMPALA_CATALOG_SERVICE_HOST=cdh01
    IMPALA_STATE_STORE_HOST=cdh01
    另外,指定kudu_master节点的位置(也可以以后执行时在参数中手动指定,不过一般在这边指定好了先),在IMPALA_SERVER_ARGS后面添加--kudu_master_hosts=cdh01:7051:

    IMPALA_SERVER_ARGS=" \
    -log_dir=${IMPALA_LOG_DIR} \
    -catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST} \
    -state_store_port=${IMPALA_STATE_STORE_PORT} \
    -use_statestore \
    -state_store_host=${IMPALA_STATE_STORE_HOST} \
    -be_port=${IMPALA_BACKEND_PORT}
    --kudu_master_hosts=cdh01:7051"

     
Step 3: 启动
  • 启动 cdh01

    service impala-state-store start
    service impala-catalog start 注意:启动时可能会报错:

    原因:/etc/hosts的配置问题。

    解决方法:

    vim /etc/hosts  (记得,只需要修改cdh01的hosts)

    可以将红框中的配置的主机名去掉,也可以将第一行移动到最后一行。此次,我是将红框中的主机名配置去掉了。

     
  • 启动其它节点

    service impala-server start
  • 通过 Web ui 查看是否启动成功

    http://cdh01:25000

2.8. 安装 Hue

导读

Hue 其实就是一个可视化平台, 主要用于浏览 HDFS 的文件, 编写和执行 Hive 的 SQL, 以及 Impala 的 SQL, 查看数据库中数据等, 而且 Hue 一般就作为 CDH 数据平台的入口, 所以装了 CDH 而不装 Hue 会觉得少了点什么, 面试的时候偶尔也会问 Hue 的使用, 所以我们简单安装, 简单使用 Hue 让大家了解以下这个可视化工具

  1. Hue 组件安装

  2. 配置 Hue

  3. 启动 Hue

Hue 只在 cdh01 上安装即可

Step 1Hue 组件安装

使用 Yum 即可简单安装

yum -y install hue
Step 2: 配置 Hue

Hue 的配置就会稍微优点复杂, 因为 Hue 要整合其它的一些工具, 例如访问 HDFS, 所以配置要从两方面说, 一是 HDFS 要允许 Hue 访问, 二是配置给 Hue 如何访问 HDFS (以及如何访问其它程序)

  • 配置 HDFS, 允许 Hue 的访问

    修改 hdfs-site.xml 增加如下内容, 以便让 Hue 用户可以访问 HDFS 中的文件

    <property>
    <name>hadoop.proxyuser.hue.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.hue.groups</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.httpfs.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.httpfs.groups</name>
    <value>*</value>
    </property>
  • 配置 Hue, 告诉 Hue 如何访问其它组件和工具

    配置 Hue 所占用的 Web 端口, 在 /etc/hue/conf/hue.ini 中搜索 http_port 修改为如下

    http_host=cdh01
    http_port=8888

    配置 Impala 的访问方式, 在 /etc/hue/conf/hue.ini 中搜索 server_host 修改为如下

    server_host=cdh01

    配置 Hive 的访问方式, 在 /etc/hue/conf/hue.ini 中搜索 hive_server_host 修改为如下

    hive_server_host=cdh01
Step 3: 启动 Hue

使用如下命令即可启动

service hue start
进入web界面: 输入网址: http://cdh01:8888/   默认初始凭据: admin/admin

小结:
开机要启动的服务
服务 命令

httpd

service httpd start

Zookeeper

service zookeeper-server start

hdfs-namenode

service hadoop-hdfs-namenode start

hdfs-datanode

service hadoop-hdfs-datanode start

hdfs-secondarynamenode

service hadoop-hdfs-secondarynamenode start

yarn-resourcemanager

service hadoop-yarn-resourcemanager start

mapreduce-historyserver

service hadoop-mapreduce-historyserver start

yarn-nodemanager

service hadoop-yarn-nodemanager start

hive-metastore

service hive-metastore start

hive-server2

service hive-server2 start

kudu-master

service kudu-master start

kudu-tserver

service kudu-tserver start

impala-state-store

service impala-state-store start

impala-catalog

service impala-catalog start

impala-server

service impala-server start

hue

service hue start

CDH版本的特点:

2.8. 使用 Scala 操作 Kudu

导读
  1. Kudu API 结构

  2. 导入 Kudu 所需要的包

  3. 创建表

  4. 插入数据

  5. 查询数据

Kudu API 的结构设计
对象 设计

Client

创建

使用 Kudu master 服务器地址列表来创建

作用

Kudu 的 API 主入口, 通过 Client 对象获取 Table 后才能操作数据

操作
  • 检查表是否存在

  • 提交表的 DDL 操作, 如 createdeletealter, 在对表进行 DDL 的时候, 需要如下两个对象

    • Kudu Schema 定义表的列结构

    • Kudu Partial Row 指定分区方式

  • 创建 Table 对象

Table

创建

通过 Client 对象开启

作用

通过 Table 对象可以操作表中的数据

操作
  • insertdeleteupdateupsert 行

  • 扫描行

Scanner

创建

通过 Table 对象开启扫描

作用

扫描表数据, 并获取结果

操作
  • Kudu 中可以通过读取模式空值该读到哪些数据, 有如下三种读取模式

    • READ_LATEST 是 Scanner 的默认模式, 只会返回已经提交的数据, 类似 ACID 中的 ReadCommitted

    • READ_AT_SNAPSHOT 读取某一个时间点的数据, 这个模式效率相对比较低, 因为会等待这个时间点之前的所有事务都提交后, 才会返回响应的数据, 类似 ACID 中的 RepeatableRead

    • READ_YOUR_WRITES 这种模式会确保读取到自己已经写入的数据, 并且尽可能的忽略其他人的写入, 会导致读取期间有其它人写入但是没有等待, 所以产生的问题就是每次读取的数据可能是不同的, 当前还是实验性功能, 尽量不要使用

导入 Kudu 所需要的包

Kudu 并没有提供 Scala 单独的客户端 SDK, 但是提供了 Java 的 SDK, 我们使用 Scala 访问 Kudu 的时候, 可以使用 Java 的 API, 可以创建一个新的工程开始 Kudu Scala 的学习, 创建工程的方式参照 Spark 部分第一天, 创建工程后, 需要先做如下两件事

需要导入如下三个 Maven 插件
  • maven-compile-plugin

    Maven 的编译插件其实是自动导入的, 现在需要导入这个插件的目的主要是需要通过其指定 JDK 的版本

  • maven-shade-plugin

    一般工程打包的方式有两种

    • uber Jar

      直译过来就是胖 Jar, 其中包含了所有依赖的 Jar 包, 通常会重命名其中一些类以避免冲突,

    • non-uber Jar

      瘦 Jar, 没有包含依赖的 Jar 包, 在运行的时候使用环境中已有的库

  • scala-maven-plugin

    引入这个插件的主要作用是编译 Scala 代码

  举个栗子, 比如说现在在本地引入了 Spark 的依赖, 要提交代码去集群运行, 但是集群中必然包含了 Spark 相关的所有依赖, 那么此时是否需要再生成 Uber Jar 了呢? 明显不需要, 因为 Spark 在安装部署集群的时候, Spark 的软件包内, 有一个 lib 目录, 其中所有的 Jar 包在运行的时候都会被加载, 完全不需要 Uber Jar
  再举个栗子, 比如说现在依然是引入 Spark 的依赖, 但是同时引入了一个 JSON 解析的包, 但是这个 JSON 解析的包在集群中并没有, 那么此时如何解决? 有两种方式, 一种是 Non-Uber Jar, 但是将依赖的 Jar 包在使用 spark-submit 命令提交任务的时候通过 -jar 参数一并提交过去. 另外一种是直接生成 Uber Jar 包含这个 JSON 解析库
需要导入一个 Kudu 的依赖包

根据使用 Hadoop 的版本不同, Kudu 的导入方式有两种, 一种是 CDH 版本的依赖, 一种是 Apache 版本的依赖, 我们当前使用 CDH 版本的依赖, 所以需要导入如下包

<dependency>
<groupId>org.apache.kudu</groupId>
<artifactId>kudu-client</artifactId>
<version>1.7.0-cdh5.16.1</version>
<scope>provided</scope>
</dependency>
整个 Maven 文件,详见代码
 
创建表(详见代码)

在进行如下操作之前, 需要先创建 Scala 的类, 通过 Junit 的方式编写代码, 当然, 也可以创建 Object, 编写 Main 方法来运行

  1. 创建 KuduClient 实例

  2. 创建表的列模式 Schema

  3. 创建表

插入数据
 详见代码
扫描查询数据
 详见代码。

2.9. 使用 Spark 操作 Kudu

  详见代码

2.10. 使用 Impala 执行 SQL 语句访问 Hive

Update(Stage5):Kudu_javaApi使用_Spark整合的更多相关文章

  1. Update(Stage5):Kudu入门_项目介绍_ CDH搭建

    Kudu 导读 什么是 Kudu 操作 Kudu 如何设计 Kudu 的表 Table of Contents 1. 什么是 Kudu 1.1. Kudu 的应用场景 1.2. Kudu 和其它存储工 ...

  2. Update(Stage5):DMP项目_业务介绍_框架搭建

    DMP (Data Management Platform) 导读 整个课程的内容大致分为如下两个部分 业务介绍 技术实现 对于业务介绍, 比较困难的是理解广告交易过程中各个参与者是干什么的 对于技术 ...

  3. JAVAEE——spring03:spring整合JDBC和aop事务

    一.spring整合JDBC 1.spring提供了很多模板整合Dao技术 2.spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模 ...

  4. Python成长之路第二篇(3)_字典的置函数用法

    字典的置函数用法(字典dict字典中的key不可以重复) class dict(object): """ dict() -> new empty dictionar ...

  5. java大框架

    本文章,列出了一些程序员需要学习的技术和知识点,有些技术和知识点没有写道,欢迎大家进行修改和补充,有些技术公司用到,大家需要先学习,有些技术和知识点过时,大家可以了解.本人笔记连接[[http://2 ...

  6. SprinBoot-SpringData-整合

    目录 SpringData 整合JDBC JDBCTemplate 整合Druid 配置数据源 配置Druid数据源监控 整合MyBatis 整合测试 整合Redis 测试整合 序列化配置 自定义re ...

  7. SpringBoot整合Mybatis注解版---update出现org.apache.ibatis.binding.BindingException: Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1, param2]

    SpringBoot整合Mybatis注解版---update时出现的问题 问题描述: 1.sql建表语句 DROP TABLE IF EXISTS `department`; CREATE TABL ...

  8. ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题

    除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar  ( ...

  9. spring boot 整合kafka 报错 Exception thrown when sending a message with key='null' and payload=JSON to topic proccess_trading_end: TimeoutException: Failed to update metadata after 60000 ms.

    org.springframework.kafka.support.LoggingProducerListener- Exception thrown when sending a message w ...

随机推荐

  1. C#连接SQL Server数据库(二)

    执行SQL语句:Command对象 1.Command对象概述   Command对象是一个数据命令对象,主要功能是向数据库发送查询.更新.删除.修改操作的SQL语句.Command对象主要有以下几种 ...

  2. vue入门基础知识点测试

    vue入门基础知识点测试 1.文本(值绑定){{var}}----控制<div></div>的值显示当前时间,且1秒更新一次.(可查阅 setinterval 函数,时间Dat ...

  3. React 实现input输入框的防抖和节流

    1.为什么使用防抖和节流对于频繁触发的事件 比如keydown keyup事件 当频繁点击时候 会多次触发事件 页面出现卡顿 影响性能 2.函数防抖(debounce):间隔时间内只执行一次   函数 ...

  4. [lua]紫猫lua教程-命令宝典-L1-01-05. if判断结构

    L1[if]01. 简单的if判断结构 没什么说得 if得基本结构如下 xxx= ) then testlib.traceprint("1-100") ) then testlib ...

  5. Go_ioutil包

    1. ioutil包的方法 // Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情 // 并且始终成功返回. var Discard io.Writer = ...

  6. Go_type

    1. type的定义和使用 Go语言支持函数式编程,可以使用高阶编程语法.一个函数可以作为另一个函数的参数,也可以作为另一个函数的返回值,那么在定义这个高阶函数的时候,如果函数的类型比较复杂,我们可以 ...

  7. 前端之js基础篇

    JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECM ...

  8. ajax传map,后端接收并解析

    前端let map = new Map(); map.set(1, 1); map.set(2, 2); map.set(3, 3); //map转obj let obj= Object.create ...

  9. Multisim中'地'的问题

    1.地其实就是一个参考电压 对于示波器而言,只用连接一个探头,另一个探头默认就是连接地.

  10. 1010 Radix (25分)

    改了一天也没明白,第7个数据是怎么卡的 #include <bits/stdc++.h> using namespace std; const int maxn=1005; typedef ...