在本地python进行mapreduce时遇到的一些麻烦

简介: 在本地python进行mapreduce时遇到的一些麻烦

之前在服务器正常运行的程序放到本地,确报了好几个错误

执行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

这个job记录

Finish job还没有结束

已经计算了 5分9秒

由于日志文件较大,服务器2g 运行,所以会等待一段时间

相关文章
|
27天前
|
分布式计算 C语言 Python
基于Python实现MapReduce
一、什么是MapReduce 首先,将这个单词分解为Map、Reduce。 • Map阶段:在这个阶段,输入数据集被分割成小块,并由多个Map任务处理。每个Map任务将输入数据映射为一系列(key, value)对,并生成中间结果。 • Reduce阶段:在这个阶段,中间结果被重新分组和排序,以便相同key的中间结果被传递到同一个Reduce任务。每个Reduce任务将具有相同key的中间结果合并、计算,并生成最终的输出。
|
1月前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
6月前
|
分布式计算 资源调度 Hadoop
centos7 伪分布式 hadoop 利用 python 执行 mapreduce
centos7 伪分布式 hadoop 利用 python 执行 mapreduce
29 0
|
分布式计算 Python
Python实现一个最简单的MapReduce编程模型WordCount
Python实现一个最简单的MapReduce编程模型WordCount
123 0
|
分布式计算 Python
Python实现一个最简单的MapReduce编程模型WordCount
Python实现一个最简单的MapReduce编程模型WordCount
134 0
|
分布式计算 Ubuntu Hadoop
|
分布式计算 大数据 Java
[雪峰磁针石博客]大数据Hadoop工具python教程3-MapReduce
MapReduce是一种编程模型,通过将工作分成独立的任务并在一组机器上并行执行任务,可以处理和生成大量数据。 MapReduce编程风格的灵感来自函数式编程结构map和reduce,它们通常用于处理数据列表。
|
分布式计算 Python
Google的MapReduce之python实现
使用python实现google的mapreduce计算框架,类似hadoop。
1472 0