作者:Jason204 |
可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://jason204.iteye.com/admin/blogs/1677664
1. 背景
Hadoop支持Java以及C/C++开发,其中Hadoop Pipes(C++)支持MapReduce,而Hadoop
libhdfs(C)支持HDFS的访问。但Python的解决方案仅能支持Hadoop部分功能,具体如下。
- Hadoop Streaming:1.
Awkward编程风格;2.仅能编写Mapper和Reducer脚本,不能编写RecordReader/Writer,Partitioner脚本;3.
不能访问HDFS;4. 仅能处理文本数据流;
- Jython:1.支持不完整的标准库;2.大多数第三方包仅兼容CPython;3.不能使用C/C++扩展;
- Hadoop-based类:局限性类似于Hadoop Streaming/Jython。
- Non-Hadoop MR类:不成熟。
以上Python方案只支持hadoop部分功能,不能完全同时支持MapReduce/HDFS。因此CRS4提出了Pydoop
方案,用Python封装Hadoop Pipes和libhdfs,实现MapReduce和HDFS的访问。
2. Pydoop特性
Pydoop的特性如下:
- 支持访问多数MR组件(RecordReader/Writer/Partitioner);
- 获取configuration,设置counter和report status;
- Like Java编程;
- 支持CPython,支持Python模块;
- 支持Hadoop HDFS API。
综上所述,归纳了Hadoop Streaming-Jython-Pydoop类的特性,如下图。
3. Pydoop架构
Pydoop架构如下图所示,包括整合Pipes和整合C libhdfs两部分。
- 整合Pipes:方法调用流从Hadoop Framework开始,通过C++ Pipes和Python
API,最后到达用户自定义的方法;Boost封装结果后,返回至Hadoop Framework。
- 整合C libhdfs: 与Pipes相反,函数调用由Pydoop触发,通过C libhdfs,到达Hadoop
framework; Boost封装结果后返回Pydoop端。
4. Pydoop模块包
Pydoop包括pydoop.hdfs、pydoop.pipes、pydoop.utils、pydoop.hadut等模块包,包的详细功能如下:
- Hdfs:hdfs api模块,包括hdfs.path、hdfs.fs、
hdfs.file子包。主要有访问HDFS,读写文件,获取文件/目录/文件系统属性的信息功能。
-
Pipes:mapreduce模块包,用于编写Mapreduce程序,编写mapreduce组件(Mapper,
Reducer, RecordReader/Writer, Partitioner,etc.)。
- Utils: utility函数模块包。
- Hadut:hadoop shell命令模块包。
参考资料
Pydoop: a Python MapReduce and HDFS API for
Hadoop
Python MapReduce Programming with
Pydoop
Pydoop官网
- 大小: 22.2 KB
- 大小: 40.2 KB
- 大小: 31.7 KB
分享到:
相关推荐
资源分类:Python库 所属语言:Python 资源全名:pydoop-1.0.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Pydoop是一个强大的开源工具,它为Python程序员提供了一个接口,可以轻松地利用Apache Hadoop的MapReduce编程模型和HDFS(Hadoop分布式文件系统)API。这个框架使得Python开发者无需深入理解Java,就能参与到Hadoop...
1. 数据分析:Pydoop常用于大规模数据的预处理、清洗和转换,利用Python丰富的数据分析库如Pandas和NumPy,可以高效地完成数据处理任务。 2. 学术研究:在学术领域,Pydoop可以帮助研究人员快速处理海量数据,进行...
您可以在本地计算机上没有安装hadoop和pydoop的情况下运行map reduce pydoop任务,并检查它们是否不包含语法错误并返回有效数据。 Fake-Pydoop可以读取文本或hadoop序列文件作为输入,并在stdout或给定的输出文件上...
首先,文章介绍了微博机器学习平台(WML)的背景和架构,包括WeiFlow统一架构、WeiLearn深度学习平台和WeiServing在线推理框架。WML是微博机器学习平台,旨在解决业务场景高度相似性、重复人力投入、成果共享有阻力...
包则是一个组织模块的方式,如numpy用于数值计算,pandas用于数据分析。 4. **异常处理**:通过try-except-finally结构处理程序运行中的错误。 5. **文件操作**:学习如何读写文件,包括文本文件和二进制文件。 6...
在本项目中,Pydoop可能用于处理和预处理大量股票交易数据,以便进一步输入到机器学习模型中。这包括数据清洗、缺失值填充、异常值处理等步骤,确保输入数据的质量和准确性。 Scikit-learn是Python中最受欢迎的机器...
针对性能优化,WeiLearn 不断更新 TensorFlow 版本,引入 pydoop、多进程 grpc,甚至使用 MPI 和 NCCL2 支持多 GPU 通信,以应对大数据量的挑战。 WeiServing 是在线推理服务框架,负责模型的实时应用。它的系统...
Python在HDFS文件系统上实现高效存储的过程不仅限于使用H5Py库,还可以借助其他工具和库,比如Pydoop,这是一个支持在Python中操作HDFS的库。Pydoop允许用户以Python的方式编写MapReduce任务,并与HDFS进行交互,...
资源分类:Python库 所属语言:Python 资源全名:pooch-1.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
1. **Hadoop架构**:Hadoop主要由两个核心组件组成——HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一个分布式文件系统,用于存储大量数据;MapReduce则是一种并行处理模型,用于对HDFS中的数据进行...
5. **JPython MapReduce框架Pydoop等**:Pydoop是一个Python接口,用于Hadoop的MapReduce,它允许开发者使用Python编写MapReduce程序,从而充分利用Python的灵活性和易用性。 #### 四、Python结合Hadoop构建数据...
分布式系统是多个计算机通过网络协同工作,共同处理一个任务的架构。这个"Python-分布式系统资源大列表"集合了一整套用于构建、理解和优化分布式系统的宝贵资料,对于Python开发者来说是不可多得的学习宝典。 首先...
在Python中,虽然没有官方的原生实现,但有很多第三方库如Hadoop的PyDoop或Apache Spark的PySpark提供了MapReduce的接口,使得Python开发者也能利用这种强大的数据处理工具。我们来深入了解一下MapReduce的基本概念...
例如,`org.apache.hadoop.mapreduce`包下的各种类和接口,如Job、TaskAttemptID等,用于配置和管理MapReduce作业。 4. **多语言编程**:除了Java,MapReduce还支持其他编程语言,如使用Python的`hadoop streaming`...
Pydoop提供了Python接口,允许开发者以Python代码编写Map和Reduce函数,然后提交到Hadoop集群运行。例如,Map函数可能会解析文本行,寻找关键词,而Reduce函数则会计算关键词的频率。 总的来说,这个压缩包提供的...
资源分类:Python库 所属语言:Python 资源全名:pgo-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
在Python和Spark中,可以通过Hadoop的Python接口(PyDoop)或者使用Spark的Hadoop兼容层与HDFS进行交互,实现对Hadoop集群的数据访问。 书中可能会涵盖以下内容: 1. Hadoop生态系统的介绍,包括HDFS、MapReduce、...
在大数据项目中,了解Python的基本语法,如变量、数据类型、控制结构(循环、条件语句)、函数和模块,是必要的。 2. **Numpy**:Numpy是Python中的科学计算库,提供了多维数组对象和矩阵运算功能。在处理大数据时...
综上所述,《Hadoop实战源代码》这份资料通过各种语言的实践代码,全面介绍了Hadoop的使用和开发,是提高Hadoop技能和解决实际问题的重要参考资料。通过深入研究这些源代码,开发者不仅可以了解Hadoop的工作原理,还...