(一)使用IDEA编写Mapper在Hadoop上执行

 

 

 

 

1.在项目上鼠标右键 --> Open Module Settings

 

 

 

2.Artifacts --> + --> JAR --> From modules with dependencies...

 

 

3.Main Class是你这个项目(脚本)的主方法,就是要运行的类,选一个

 

 

4.如下图,设置 META-INF/MANIFEST.MF

!!!!!切记,不能用默认的(起码我用默认的是不成功的)!!!!!

 

5.选中你这个项目的根目录,一定要放在根目录下

 

 

6.设置完是这样子的,关于 JAR files from libraries的两个选项:

选中第一个的话,打完包后是一个jar包

选中第二个的话,打完包后是一个jar包,外带你项目所用的jar包,个人推荐第二个

 

 

7.设置完后就可以点OK了

8.这个页面, Build on make打上勾,其他的不一样也没事

 

 

9.最后一步, Build Artifacts... --> XXX.jar --> Build 

 

10.复制这里的路径去找jar包就行

 

11.编辑sh启动脚本

vi  data-clean.sh

插入文本

#!/bin/bash
#当前时间减去一天  处理上一天的数据
day_str=`date -d '-1 day' +'%Y-%m-%d'`

#输入文件
inpath=/app-log-data/data/$day_str
#输出文件
outpath=/app-log-data/clean/$day_str

echo "准备清洗$day_str 的数据......"

#执行mapper清洗数据   
#如果打jar未指定主方法  需要在下面jar后面加上主方法的路径
/home/hadoop/apps/hadoop-2.7.5/bin/hadoop jar /root/hadoop.jar  $inpath $outpath

#判断上一条命令是否执行成功   不等于0就是执行失败
if [[ $? -ne 0 ]]; then
    echo "failed"
else
    echo "succeed"
fi

 

12.将未清洗的数据上传到HDFS上

创建目录未清洗数据目录:

 hadoop fs -mkdir /app-log-data/data

 

创建目录清洗完成数据目录

hadoop fs -mkdir /app-log-data/clean

 

 

 

13.执行jar

sh data-clean.sh

 

 

 

错误总结:

1.8032端口拒绝连接

解决:1.start-yarn.sh     启动yarn  服务器:hadoop4        2.yarn-daemon.sh start resourcemanager   启动备用yarn    服务器:hadoop3

 

2.提示输入或者输出路径不存在

解决:在HDFS上创建输入和输出目录

 

posted @ 2019-06-03 12:04  冷暖自知hk  阅读(873)  评论(0编辑  收藏  举报