python部署到hadoop上_python实现mapreduce(2)——在hadoop中执行
目的:将python实现mapreduce(1)中的python脚本部署到hadoop上,实现mapreduce。
1. 修改脚本执行权限
[tianyc@TeletekHbase ~]$ which python
/usr/bin/python
#将 #!/usr/bin/python 加到map.py和red.py的第一行,并设置执行权限。
[tianyc@TeletekHbase python]$ chmod 744 *.py
[tianyc@TeletekHbase python]$ ll
总用量 20
-rwxr--r--. 1 tianyc NEU 132 2月 19 00:40 map.py
-rwxr--r--. 1 tianyc NEU 324 2月 19 00:56 red.py
-rw-r--r--. 1 tianyc NEU 314 2月 18 22:34 test.dat
[tianyc@TeletekHbase python]$ scp ~/study/mapred/python/*.py s1:~/study/mapred/python
map.py 100% 132 0.1KB/s 00:00
red.py 100% 324 0.3KB/s 00:00
[tianyc@TeletekHbase python]$ scp ~/study/mapred/python/*.py s2:~/study/mapred/python
map.py 100% 132 0.1KB/s 00:00
red.py 100% 324 0.3KB/s 00:00
#在s1和s2上分别修改这2个脚本的权限为744
2. 将测试文件放到hdfs上
[tianyc@TeletekHbase python]$ ~/hadoop/bin/hadoop dfs -copyFromLocal test.dat test.dat
[tianyc@TeletekHbase python]$ ~/hadoop/bin/hadoop dfs -ls
Found 1 items
-rw-r--r-- 2 tianyc supergroup 314 2013-02-19 03:14 /user/tianyc/test.dat
3. 执行mapreduce
[tianyc@TeletekHbase hadoop]$ ~/hadoop/bin/hadoop jar ~/hadoop/contrib/streaming/hadoop-streaming-1.0.4.jar -mapper ~/study/mapred/python/map.py -reducer ~/study/mapred/python/red.py -input test.dat -output test-output
packageJobJar: [/tmp/hadoop-tianyc/hadoop-unjar5892434231150397369/] [] /tmp/streamjob7683487212899164160.jar tmpDir=null
13/02/20 16:45:23 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/02/20 16:45:23 WARN snappy.LoadSnappy: Snappy native library not loaded
13/02/20 16:45:23 INFO mapred.FileInputFormat: Total input paths to process : 1
13/02/20 16:45:23 INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-tianyc/mapred/local]
13/02/20 16:45:23 INFO streaming.StreamJob: Running job: job_201302201459_0010
13/02/20 16:45:23 INFO streaming.StreamJob: To kill this job, run:
13/02/20 16:45:23 INFO streaming.StreamJob: /home/tianyc/hadoop-1.0.4/libexec/../bin/hadoop job -Dmapred.job.tracker=http://TeletekHbase:9001 -kill job_201302201459_0010
13/02/20 16:45:23 INFO streaming.StreamJob: Tracking URL: http://TeletekHbase:50030/jobdetails.jsp?jobid=job_201302201459_0010
13/02/20 16:45:24 INFO streaming.StreamJob: map 0% reduce 0%
13/02/20 16:45:37 INFO streaming.StreamJob: map 50% reduce 0%
13/02/20 16:45:38 INFO streaming.StreamJob: map 100% reduce 0%
13/02/20 16:45:49 INFO streaming.StreamJob: map 100% reduce 100%
13/02/20 16:45:55 INFO streaming.StreamJob: Job complete: job_201302201459_0010
13/02/20 16:45:55 INFO streaming.StreamJob: Output: test-output
4. 查看执行结果
[tianyc@TeletekHbase hadoop]$ hadoop dfs -ls
Found 7 items
drwxr-xr-x - tianyc supergroup 0 2013-02-20 16:45 /user/tianyc/test-output
-rw-r--r-- 2 tianyc supergroup 314 2013-02-19 03:14 /user/tianyc/test.dat
[tianyc@TeletekHbase hadoop]$ hadoop dfs -ls test-output
Found 3 items
-rw-r--r-- 2 tianyc supergroup 0 2013-02-20 16:45 /user/tianyc/test-output/_SUCCESS
drwxr-xr-x - tianyc supergroup 0 2013-02-20 16:45 /user/tianyc/test-output/_logs
-rw-r--r-- 2 tianyc supergroup 17 2013-02-20 16:45 /user/tianyc/test-output/part-00000
[tianyc@TeletekHbase hadoop]$ hadoop dfs -cat test-output/part-00000
1949 111
1950 22
[tianyc@TeletekHbase hadoop]$
其他:
1. 执行过程可能会比较长,可以通过命令查看作业的执行情况
[tianyc@TeletekHbase ~]$ hadoop job -list
1 jobs currently running
JobId State StartTime UserName Priority SchedulingInfo
job_201302180014_0006 1 1361216791160 tianyc NORMAL NA
[tianyc@TeletekHbase ~]$ hadoop job -status job_201302180014_0006
Job: job_201302180014_0006
file: hdfs://master:9000/tmp/hadoop-tianyc/mapred/staging/tianyc/.staging/job_201302180014_0006/job.xml
tracking URL: http://master:50030/jobdetails.jsp?jobid=job_201302180014_0006
map() completion: 1.0
reduce() completion: 0.16666667
Counters: 25
Job Counters
Launched reduce tasks=3
SLOTS_MILLIS_MAPS=13255
Launched map tasks=2
Data-local map tasks=2
SLOTS_MILLIS_REDUCES=8739
File Input Format Counters
Bytes Read=472
FileSystemCounters
HDFS_BYTES_READ=656
FILE_BYTES_WRITTEN=68722
Map-Reduce Framework
Map output materialized bytes=77
Map input records=5
Reduce shuffle bytes=32
Spilled Records=5
Map output bytes=55
Total committed heap usage (bytes)=337780736
CPU time spent (ms)=2790
Map input bytes=314
SPLIT_RAW_BYTES=184
Combine input records=0
Reduce input records=0
Reduce input groups=0
Combine output records=0
Physical memory (bytes) snapshot=334417920
Reduce output records=0
Virtual memory (bytes) snapshot=1138679808
Map output records=5
2. 若mr执行失败,可以通过浏览器登录jobtracker的web控制台查看具体的故障堆栈。一般在jobtracker的50030端口(http://jobmaster:50030)。
我的错误提示为:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out 解决办法可以参考这个帖子。因为我最初是参考这个帖子部署的hadoop,设置了master,s1和s2,这与/etc/sysconfig/network中的HOSTNAME不一致了。
3. 将/etc/hosts与/etc/sysconfig/network设置一致后,仍然出现了问题。详细描述参考这里。
python部署到hadoop上_python实现mapreduce(2)——在hadoop中执行相关推荐
- python查看函数参数快捷键_python查看函数源代码快捷键_pycharm中查看源码的快捷键...
html使用心得 (1) 在 ... Spring中WebApplicationContext的研究 Spring中WebApplicationContext的研究 ApplicationContex ...
- python交互式环境是什么意思_如何在交互式环境中执行 Python 程序
如何在交互式环境中执行 Python 程序 相信接触过 Python 的小伙伴们都知道运行 Python 脚本程序的方式有多种, 目前主要的方式有: 交互式环境运行命令行窗口运行开发工具上运行等, 其 ...
- python部署到服务器上解析不到模块_python socket模块放到服务器上就跑不了了 -问答-阿里云开发者社区-阿里云...
话不多说直接放代码: 先说一下,下面出现的101.133.229.251是我服务器IP 客户端: import socket s = socket.socket(socket.AF_INET,sock ...
- python命令行下载文件_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...
最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install readl ...
- python 安卓模拟点击_python模拟点击在ios中实现的实例讲解
我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...
- python dataframe取一列_python - 从pandas DataFrame列标题中获取列表
python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...
- python怎么让按钮透明_python – 如何创建一个响应Tkinter中的click事件的透明矩形...
我需要在tkinter.canvas中绘制一个矩形来响应click事件: click_area = self.canvas.create_rectangle(0,0,pa_width,pa_heigh ...
- python实现安卓点击_python模拟点击在ios中实现的实例讲解
我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...
- python的cgi配置教程_Python CGI环境在不同操作系统中配置方法
我们今天主要为大家介绍的是有关Python CGI环境在不同操作系统中的配置方法.相信对于大多数开发人员来说,都急切的需要掌握这一应用技术.接下来就让我们一起来看看具体的应用方法吧. CGI 代表CO ...
最新文章
- C# Dynamic特性
- [YTU]_2566( 虚基类练习:动物)
- requireJS和seajs区别?
- python里删除range里的数字_python中range函数与列表中删除元素
- python的xml.dom学习笔记
- c语言 自适应模式算术编码,算术压缩论文基于算术编码的数据压缩算法研究与实现.doc...
- 遥感原理与应用读书笔记(遥感平台、遥感传感器)
- 为保证云应用及虚拟串口功能正常使用,请务必下载安装Windows系统环境补丁
- GDELT数据介绍/GDELT项目官方文档翻译
- Axure热区的使用
- 刘一男词汇课(从abdomen到enormous):书上有路勤为径,学海无涯“懂“作舟
- CLC龍链:致力于打造支付生态系统
- ios 振动棒软件_iOS 14很棒
- 批量修改文件夹中文件的后缀名
- play 1.2.7
- linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...
- 学习ELMo从文本中提取特征的分步NLP指南
- 商汤公开IPO上市,估值1026亿,创始人汤晓鸥教授身家220亿
- Linux学习基本步骤
- 至强服务器系统配置截图,至强服务器操作系统
热门文章
- 网络爬虫-python-爬取天涯求职贴
- SQL Server中count(*), count(col), count(1)的对比
- JS的Document属性和方法
- Java异常的性能分析
- VS2010 自定义用户控件未出现在工具箱的解决方案
- layer重复弹出(layui弹层同时存在多个)的解决方法
- FFmpeg被声明为已否决的解决方案
- 解决启动mysql.exe闪退问题
- 为什么静态方法在Java中不能是抽象的
- Python是否具有字符串“包含”子字符串方法?