MRS二次开发(4/27): MapReduce多组件样例

举报
晋红轻 发表于 2020/11/28 09:55:52 2020/11/28
【摘要】 MapReduce是一个并行计算软件框架,,一个MapReduce作业(application/job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式来处理。框架会对map的输出先进行排序,然后把结果输入给reduce任务,最后返回给客户端。本文介绍MapReduce多组件样例。

MRS二次开发(4/27): MapReduce多组件样例

一、MapReduce简介

 MapReduce是一个并行计算软件框架,,一个MapReduce作业(application/job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式来处理。框架会对map的输出先进行排序,然后把结果输入给reduce任务,最后返回给客户端。

二、样例背景

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

该样例逻辑过程如下:

Map阶段:

获取HDFS文件输入数据的一行并提取姓名信息;

查询HBase一条数据,指定表名table1,列簇cf,rowkey为1;

根据HDFS读取到的读取查询Hive一条数据;

HBase查询结果与Hive查询结果进行拼接作为Map输出。

Reduce阶段:

获取Map输出中的最后一条数据。

将数据输出到HBase,表名table1,列簇cf,rowkey为HDFS数据中读取到的name,值为拼装后的值;

将数据保存到HDFS。

三、原始数据准备

3.1 HDFS数据准备

准备data.txt文件,其内容为

YuanJing,male,10
GuoYijun,male,5

data.txt上传到HDFS

hdfs dfs -mkdir -p  /tmp/examples/multi-components/mapreduce/input/
hdfs dfs -put data.txt /tmp/examples/multi-components/mapreduce/input/

3.2 Hive数据准备

通过beeline创建表person,并将上一步创建的hdfs数据导入person表,注意执行完毕后HDFS数据被移走到了hive库,HDFS数据需重新上传。

CREATE TABLE person(name STRING, gender STRING, stayTime INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' stored as textfile;
LOAD DATA INPATH '/tmp/examples/multi-components/mapreduce/input/' OVERWRITE INTO TABLE person;

3.3 HBase数据准备

通过hbase shell命令创建表table1

create 'table1', 'cf'
put 'table1', '1',  'cf:cid', '123'

三、Windows环境样例调用步骤

环境准备,参考第一课

比对时间,与集群时间误差不能超过5分钟

检查 C:\Windows\System32\drivers\etc\hosts文件中是否包含所有集群节点的域名IP映射信息

IDEA打开样例代码的mapreduce-example-security目录,检查SDK配置

默认自动加载依赖,如未加载,则打开后选中pom.xml文件,右键点击“Add As Maven Project”后等待项目自动将依赖下载完毕

Manager界面下载用户认证凭据后,解压缩获取秘钥文件user.keytab和krb5.conf,将这两个文件放到样例代码的conf目录

从客户端/opt/client/Yarn/config/获取core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 文件放到样例代码的conf目录

从客户端/opt/client/Hive/config获取hiveclient.properties、hive-site.xml放到样例代码的conf目录

从客户端/opt/client/HBase/hbase/conf获取hbase-site.xml放到样例代码conf目录

在样例代码conf目录中创建jaas_mr.conf文件,其内容参考如下:

  • Client {
    sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab="./user.keytab"
    principal="developuser"
    useTicketCache=false
    storeKey=true
    debug=true;
    };

修改src\main\java\com\huawei\bigdata\mapreduce\examples\MultiComponentExample.java中的PRINCIPAL为认证用户名

右键conf目录,选择“Mark Directory as”-"Resources Root"

src\main\java\com\huawei\bigdata\mapreduce\local\MultiComponentLocalRunner.java右键执行Run 启动样例代码

四、Linux环境调试步骤

前提:Linux环境有安装集群客户端

完成Windows环境样例调用步骤

检查linux环境时间与集群误差不超过5分钟

检查linux环境的JDK版本为1.8

配置linux环境的/etc/hosts文件

参考原始数据准备部分完成数据准备

在客户端节点上新建一个空目录,名字自定义,例如/opt/mrstest,将windows环境调试通过的样例代码中的conf目录上传到该目录下,即/opt/mrstest/conf

windows环境中执行打包,获取Target目录下的 MRTest-8.0.0-SNAPSHOT.jar,上传到/opt/mrs_test目录

windows环境打包生成的Target目录下的lib目录上传到/opt/mrs_test目录

在客户端节点配置环境变量

   export YARN_USER_CLASSPATH=/opt/mrs_test/conf/:/opt/mrs_test/lib/*:/opt/mrs_test/MRTest-8.0.0-SNAPSHOT.jar

执行如下命令验证linux环境下可执行MR任务

   source /opt/client/bigdata_env
   kinit developuser
   yarn jar MRTest-8.0.0-SNAPSHOT.jar com.huawei.bigdata.mapreduce.examples.MultiComponentExample

五、问题互动渠道

FusonInsight 论坛入口 https://bbs.huaweicloud.com/forum/forum-1103-1.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。