目的:将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中执行相关推荐

  1. python查看函数参数快捷键_python查看函数源代码快捷键_pycharm中查看源码的快捷键...

    html使用心得 (1) 在 ... Spring中WebApplicationContext的研究 Spring中WebApplicationContext的研究 ApplicationContex ...

  2. python交互式环境是什么意思_如何在交互式环境中执行 Python 程序

    如何在交互式环境中执行 Python 程序 相信接触过 Python 的小伙伴们都知道运行 Python 脚本程序的方式有多种, 目前主要的方式有: 交互式环境运行命令行窗口运行开发工具上运行等, 其 ...

  3. python部署到服务器上解析不到模块_python socket模块放到服务器上就跑不了了 -问答-阿里云开发者社区-阿里云...

    话不多说直接放代码: 先说一下,下面出现的101.133.229.251是我服务器IP 客户端: import socket s = socket.socket(socket.AF_INET,sock ...

  4. python命令行下载文件_python写的批量操作远程主机脚本(命令执行,上传、下载文件)...

    最近在学习python,借助fabric模块写了个批量操作服务器的脚本,在此分享给大家,如有不足之处,欢迎大家指正 准备工作: 安装python 2.6.5: yum -y install readl ...

  5. python 安卓模拟点击_python模拟点击在ios中实现的实例讲解

    我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...

  6. python dataframe取一列_python - 从pandas DataFrame列标题中获取列表

    python - 从pandas DataFrame列标题中获取列表 我想从pandas DataFrame中获取列标题列表. DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们. ...

  7. python怎么让按钮透明_python – 如何创建一个响应Tkinter中的click事件的透明矩形...

    我需要在tkinter.canvas中绘制一个矩形来响应click事件: click_area = self.canvas.create_rectangle(0,0,pa_width,pa_heigh ...

  8. python实现安卓点击_python模拟点击在ios中实现的实例讲解

    我们都知道因为操作系统的不同,很多游戏区分为安卓和苹果两个版本.那么之前学会python模拟点击的小伙伴开始担心,如果手机是ios版本那还能使用吗?这个问题小编进行了测试,小伙伴们完全不用忧虑ios版 ...

  9. python的cgi配置教程_Python CGI环境在不同操作系统中配置方法

    我们今天主要为大家介绍的是有关Python CGI环境在不同操作系统中的配置方法.相信对于大多数开发人员来说,都急切的需要掌握这一应用技术.接下来就让我们一起来看看具体的应用方法吧. CGI 代表CO ...

最新文章

  1. C# Dynamic特性
  2. [YTU]_2566( 虚基类练习:动物)
  3. requireJS和seajs区别?
  4. python里删除range里的数字_python中range函数与列表中删除元素
  5. python的xml.dom学习笔记
  6. c语言 自适应模式算术编码,算术压缩论文基于算术编码的数据压缩算法研究与实现.doc...
  7. 遥感原理与应用读书笔记(遥感平台、遥感传感器)
  8. 为保证云应用及虚拟串口功能正常使用,请务必下载安装Windows系统环境补丁
  9. GDELT数据介绍/GDELT项目官方文档翻译
  10. Axure热区的使用
  11. 刘一男词汇课(从abdomen到enormous):书上有路勤为径,学海无涯“懂“作舟
  12. CLC龍链:致力于打造支付生态系统
  13. ios 振动棒软件_iOS 14很棒
  14. 批量修改文件夹中文件的后缀名
  15. play 1.2.7
  16. linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...
  17. 学习ELMo从文本中提取特征的分步NLP指南
  18. 商汤公开IPO上市,估值1026亿,创始人汤晓鸥教授身家220亿
  19. Linux学习基本步骤
  20. 至强服务器系统配置截图,至强服务器操作系统

热门文章

  1. 网络爬虫-python-爬取天涯求职贴
  2. SQL Server中count(*), count(col), count(1)的对比
  3. JS的Document属性和方法
  4. Java异常的性能分析
  5. VS2010 自定义用户控件未出现在工具箱的解决方案
  6. layer重复弹出(layui弹层同时存在多个)的解决方法
  7. FFmpeg被声明为已否决的解决方案
  8. 解决启动mysql.exe闪退问题
  9. 为什么静态方法在Java中不能是抽象的
  10. Python是否具有字符串“包含”子字符串方法?