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上创建输入和输出目录