实验3 Map/Reduce程序设计

一、实验目的

掌握Map/Reduce相关原理和设计方法,设计相关的应用。

二、实验内容

    数据集stock-daily,包含A股近4000只股票的最近30个交易日的日数据,根据此数据实现股票风险监测统计:统计和输出股票代码和风险值

三、实验步骤

 1、打开IntelliJ或Eclipse创建Maven项目;

2、参考WordCount示例代码编写本实验代码;

3、基本代码逻辑:

Map

输入:一行数据(一只股票的日数据)

处理:使用 \t 将字符串split成数组,提取需要计算的值,并转为浮点数

输出:<股票代码, 股票当日下行指数>

      遇到无效数据不输出(停牌股票或有N/A数据无法提取为浮点数)

Reduce:

输入:<股票代码,[股票每日下行指数]>

处理:计算均值

输出:<股票代码,股票下行指数>

四、实验结果

Pom.xml

 junit选择的是5.8.2,  log4j是2.17.1,hadoop-hdfs,hadoop-common,hadoop-mapreduce-client-core都是3.1.2,jdk版本1.8.0_161。

完成pom.xml编辑后,点击Import Changes下载所需jar包

Java代码如下:

创建了一个Stock类,实现了run方法

继承Mapper类

继承Reducer类

Java代码编译后,打包jar包,目录如下

三个节点都分配了2GB内存

MapReduce配置

1、mapred-site.xml

增加两个配置:

<property>

   <name>mapreduce.admin.user.env</name>

   <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>

</property>

<property>

   <name>yarn.app.mapreduce.am.env</name>

   <value>HADOOP_MAPRED_HOME=$HADOOP_COMMON_HOME</value>

</property>

2、yarn-site.xml

增加container本地日志查看配置

<property>  

  <name>yarn.nodemanager.log-dirs</name>  

  <value>hadoop安装目录/logs/userlogs</value>  

</property>

<property>  

  <name>yarn.nodemanager.log.retain-seconds</name>  

  <value>108000</value>  

</property>

<property>

  <name>yarn.nodemanager.resource.memory-mb</name>

  <value>2048</value> <!--此项小于1536,mapreduce程序会报错-->

</property>

<property>

  <name>yarn.scheduler.maximum-allocation-mb</name>

  <value>2048</value>   <!--防止一级调度器请求资源量过大-->

</property>

设置虚拟内存与内存的倍率,防止VM不足Container被kill

<property>  

  <name>yarn.nodemanager.vmem-pmem-ratio</name>  

  <value>3</value>  

</property>

上传jar包和数据,并启动Hadoop

Jar包我放在了linux的root目录下

数据放在了hdfs的/usr下,指定输出目录为/usr/output1

输入命令hadoop jar Stock_Index.jar  cn.edu.swpu.scs.Stock /usr/stock-daily30d.txt /usr/output1执行jar包,执行信息如下:

      

查看输出文件部分内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_73931224

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值