之前在服务器正常运行的程序放到本地,确报了好几个错误
执行cat input.txt | ./map.py
报错 1 sh: ./map.py: Permission denied
解决方法
#赋予可执行权限 chmod -Rf 777 文件夹路径
1解决之后
报错 2 ./map.py: line 1: import: command not found ./map.py: line 4: syntax error near unexpected token `fields' ./map.py: line 4: ` fields = line.split()'
没有指定 python 执行环境编译器
解决方法
在python 文件第一行 指定编译器的环境
!!!!!!一定要把 #! 这句话放到第一行
否则还会报错
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3 #指定编译环境
报错三没有访问权限 成为root 执行 sudo su
解决错误
成功输出
cd cloudcomput/log_analysis cat temp.log | ./map.py cat temp.log | ./map.py | sort | ./reduce.py |more cat www.limengkai.work.log | ./map.py | sort | ./reduce.py |more message=my_hdfs.upload(‘www.limengkai.work.log’,’/sy3/temp_file1.txt’)
上传文件
检查脚本无误后,编写run.sh 脚本
配置 hadoop 的 执行命令 在安装路径的bin 文件中
HADOOP_CMD="/cloudcomput/hadoop-3.2.1/bin/hadoop"
配置 配置 streaming jar包的 路径
STREAM_JAR_PATH="/cloudcomput/hadoop-3.2.1/share/hadoop/tools/lib/hadoop-streaming-3.2.1.jar"
#配置 需要 计算的 输入文件的路径
#如果有 多个文件可以书写为 /{文件夹名称}/*.txt 或者其他格式
INPUT_FILE_PATH_1="/sy3/temp_file1.txt"
#配置 输出文件的 文件夹目录
OUTPUT_PATH="/sy3output"
在执行之前如果 存在 输出文件夹 原本会报错 ,
#所以执行之前先删除 output 文件夹 , 再 导出文件
$HADOOP_CMD fs -rm -r skipTrash $OUTPUT_PATH
Step 1.
hadoop jar streaming.jar
$HADOOP_CMD jar $STREAM_JAR_PATH -input $INPUT_FILE_PATH_1 -output $OUTPUT_PATH -mapper ./maplog.py -reducer ./reducelog.py -file ./maplog.py -file ./reducelog.py \ #配置 mapper 步骤的 算法py文件 #即 可以在 子节点进行的计算 #配置 reducer 步骤的 算法py文件 #需要 汇总计算 的文件 指定linux 定期执行 crontab #查看当前电脑上的所有定时任务 crontab -l 0 7 */1 * * /amyscript/sendemail.sh 20 5 1,2,3,4,5 * * /amyscript/sendtoxxx1.sh 20 5 6,7 * * /amyscript/sendtoxxx2.sh #更改服务器上的定时任务 crontab -e #更改成功的提示 crontab: installing new crontab
添加 该脚本 定期执行即可
查看hadoop 运算的日志计算 job
Finish job还没有结束
已经计算了 5分9秒
由于日志文件较大,服务器2g 运行,所以会等待一段时间