更新时间:2024-10-23 GMT+08:00

MapReduce访问多组件样例程序开发思路

场景说明

该样例以MapReduce访问HDFS、HBase、Hive为例,介绍如何编写MapReduce作业访问多个服务组件。帮助用户理解认证、配置加载等关键使用方式。

该样例逻辑过程如下:

以HDFS文本文件为输入数据:

log1.txt:数据输入文件

YuanJing,male,10
GuoYijun,male,5

Map阶段:

  1. 获取输入数据的一行并提取姓名信息。
  2. 查询HBase一条数据。
  3. 查询Hive一条数据。
  4. 将HBase查询结果与Hive查询结果进行拼接作为Map输出。

Reduce阶段:

  1. 获取Map输出中的最后一条数据。
  2. 将数据输出到HBase。
  3. 将数据保存到HDFS。

数据规划

  1. 创建HDFS数据文件。
    1. 在Linux系统上新建文本文件,将log1.txt中的内容复制保存到data.txt。
    2. 在HDFS上创建一个文件夹“/tmp/examples/multi-components/mapreduce/input/”,并上传data.txt到此目录,命令如下:
      1. 登录HDFS客户端。

        cd 客户端安装目录

        source bigdata_env

      2. 在Linux系统HDFS客户端使用命令hdfs dfs -mkdir -p/tmp/examples/multi-components/mapreduce/input/
      3. 在Linux系统HDFS客户端使用命令hdfs dfs -putdata.txt /tmp/examples/multi-components/mapreduce/input/
  2. 创建HBase表并插入数据。
    1. 在Linux系统HBase客户端执行source bigdata_env,并使用命令hbase shell
    2. 在HBase shell交互窗口创建数据表table1,该表有一个列族cf,使用命令create 'table1', 'cf'
    3. 插入一条rowkey为1、列名为cid、数据值为123的数据,使用命令put 'table1', '1', 'cf:cid', '123'
    4. 执行命令quit退出。
  3. 创建Hive表并载入数据。
    1. 在Linux系统Hive客户端使用命令beeline
    2. 在Hive beeline交互窗口创建数据表person,该表有3个字段:name/gender/stayTime,使用命令CREATE TABLE person(name STRING, gender STRING, stayTime INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
    3. 在Hive beeline交互窗口加载数据文件,LOAD DATA INPATH'/tmp/examples/multi-components/mapreduce/input/'OVERWRITE INTO TABLE person;
    4. 执行命令!q退出。
  4. 由于Hive加载数据将HDFS对应数据目录清空,所以需再次执行1