MRS二次开发(4/27): 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
- 点赞
- 收藏
- 关注作者
评论(0)