使用华为云完成MapReduce初级编程实践

1.购买集群

  • 登录MRS管理控制台。
  • 单击“购买集群”,进入“购买集群”页面。
  • 在购买集群页面,选择“自定义购买”页签。
  • 配置集群软件信息。
  • 区域:华北-北京四。
  • 集群名称:可以设置为系统默认名称,但为了区分和记忆,建议带上项目拼音缩写或者日期等。例如:“mrs_20180321”。
  • 集群版本:MRS1.9.2。
  • 集群类型:选择“分析集群”。
  • 组件选择:勾选HBase,Hive,Hue等组件。
  • 元数据:默认即可。
  • 单击“下一步”。
  • 计费模式:按需计费。
  • 可用区:默认即可。
  • 虚拟私有云:默认即可。如果没有虚拟私有云,请单击“查看虚拟私有云”进入虚拟私有云,创建一个新的虚拟私有云。
  • 子网:默认即可。
  • 安全组:选择“自动创建”。
  • 弹性公网IP:选择已有的绑定。
  • 企业项目:默认即可。
  • 实例规格:Master和Core节点都选择“鲲鹏通用计算增强型4 vCPUs | 16 GB | kc1.xlarge.4”。
  • 系统盘:存储类型选择“普通IO”,存储空间默认即可。
  • 数据盘:存储类型选择“普通IO”,存储空间默认即可,数据盘数量默认即可。
  • 实例数量:Master节点数量默认为2,Core节点数量配置为3。
  • 单击“下一步”进入高级配置页签,配置参数,其他参数保持默认。
    • Kerberos认证:
      • Kerberos认证:关闭Kerberos认证。
      • 用户名:Manager管理员用户,目前默认为admin用户。
      • 密码:Manager管理员用户的密码。
    • 登录方式:选择登录ECS节点的登录方式。
      • 密码:设置登录ECS节点的登录密码。
      • 密钥对:从下拉框中选择密钥对,如果已获取私钥文件,请勾选“我确认已获取该密钥对中的私钥文件SSHkey-xxx,否则无法登录弹性云服务器”。如果没有创建密钥对,请单击“查看密钥对”创建或导入密钥,然后再获取私钥文件。
    • 通信安全授权:勾选确认授权。
    • 服务协议:勾选“我已阅读并同意《华为MRS服务声明》”。
  • 单击“立即购买”。

    当集群开启Kerberos认证时,需要确认是否需要开启Kerberos认证,若确认开启请单击“继续”,若无需开启Kerberos认证请单击“返回”关闭Kerberos认证后再创建集群。

  • 单击“返回集群列表”,可以查看到集群创建的状态。

    集群创建需要时间,所创集群的初始状态为“启动中”,创建成功后状态更新为“运行中”,请您耐心等待。

2. 使用eclipse编程

安装Eclipse

开发环境的基本配置。版本要求:4.2。

安装JDK

版本要求:1.8版本。

获取并导入样例工程 

华为云开源镜像配置方式如下所示:

  1. 使用前请确保您已安装JDK 1.8及以上版本和Maven 3.0及以上版本。
  2. 打开网址华为开源镜像站_软件开发服务_华为云并登录华为开源镜像站。
  3. 点击此处,下载华为开源镜像站提供的“settings.xml”文件,覆盖至“<本地Maven安装目录>/conf/settings.xml”文件即可。若无法直接下载,在华为开源镜像站搜索并单击名称为“HuaweiCloud SDK”的版块,按照页面弹出的设置方法进行操作。

 导入样例工程到Eclipse开发环境。(导入前确保下图)

  

  1. 打开Eclipse,选择“File > Import”。显示“Import”窗口,选择Existing Maven Projects,点击“next”按钮。
  2. 在“Import Maven Projects”窗口单击“Browse”。显示“Select Root Folder”对话框。
  3. 选择样例工程文件夹mapreduce-examples,单击“确定”按钮。
  4. 在“Import Maven Projects”窗口单击“Finish”按钮。

3.编译并运行程序 

 生成MapReduce应用可执行包。在工程目录target目录下获取,比如“mapreduce-examples-1.0.jar”。执行mvn package打出jar包,或如下图

  

  

  

也可以生成jar文件

 上传生成的应用包“mapreduce-examples-1.0.jar”到Linux客户端上。例如“/opt”目录

华为云的cloudshell下右键文件夹可以看见上传选项,或者使用WinSCP,下面以样例工程中统计样例程序进行分析

开发思路

统计日志文件中本周末网购停留总时间超过2个小时的女性网民信息。

主要分为四个部分。

  • 读取原文件数据。
  • 筛选女性网民上网时间数据信息。
  • 汇总每个女性上网总时间。
  • 筛选出停留总时间大于两个小时的女性网民信息。

功能介绍

统计日志文件中本周末网购停留总时间超过2个小时的女性网民信息。

主要分为三个部分。

  • 从原文件中筛选女性网民上网时间数据信息,通过类CollectionMapper继承Mapper抽象类实现。
  • 汇总每个女性上网时间,并输出时间大于两个小时的女性网民信息,通过类CollectionReducer继承Reducer抽象类实现。
  • main方法提供建立一个MapReduce job,并提交MapReduce作业到hadoop集群。

具体代码参见com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector类  

log1.txt:周六网民停留日志


LiuYang,female,20
YuanJing,male,10
GuoYijun,male,5
CaiXuyu,female,50
Liyuan,male,20
FangBo,female,50
LiuYang,female,20
YuanJing,male,10
GuoYijun,male,50
CaiXuyu,female,50
FangBo,female,60

log2.txt:周日网民停留日志 


LiuYang,female,20
YuanJing,male,10
CaiXuyu,female,50
FangBo,female,50
GuoYijun,male,5
CaiXuyu,female,50
Liyuan,male,20
CaiXuyu,female,50
FangBo,female,50
LiuYang,female,20
YuanJing,male,10
FangBo,female,50
GuoYijun,male,50
CaiXuyu,female,50
FangBo,female,60

在Linux环境下运行样例工程。执行如下命令

cd /opt
yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>

需要把输入的文件上传到HDFS的<inputPath>目录下,例在HDFS上建立一个文件夹,“/tmp/input”,将log1.txt中的内容复制保存到input_data1.txt,将log2.txt中的内容复制保存到input_data2.txt,并上传input_data1.txt,input_data2.txt到此目录

  1. 在Linux系统HDFS客户端使用命令hdfs dfs -mkdir /tmp/input
  2. 在Linux系统HDFS客户端使用命令hdfs dfs -put local_filepath /tmp/input

在执行yarn jar mapreduce-examples-1.0.jar com.huawei.bigdata.mapreduce.examples.FemaleInfoCollector <inputPath> <outputPath>命令之前,<outputPath>目录必须不存在,否则会报错。

 自己的结果

1.编写程序实现对输入文件的排序

2.对给定的表格进行信息挖掘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值