我最近用 java 编写了几个 map/reduce 程序。但是我也知道像php这样的脚本语言也是可以的。但是,大多数人都推荐 java 或 python。我目前在 php 工作。所以我想知道哪种语言更适合 map/reduce 程序开发?
用于 map/reduce 实现的 php 的一个主要缺点是,它不是多线程的。
此外,hadoop 具有广泛的类、接口(interface)和方法框架,专门用 java 编写,而 php 程序无法使用。而且,php 并不是为处理繁重的数据处理任务而设计的。
那么谁能从广义上告诉我选择哪一个作为 map/reduce 实现的首选武器?
shanthanu,你的第一个问题是
问)哪种脚本语言适合 hadoop?
A) 大多数脚本语言如 php、python、perl、ruby bash 都不错。任何能够从 stdin 读取、写入 sdtout 以及解析制表符和换行符的语言都可以工作:Hadoop Streaming 只是将键值对的字符串表示与制表符连接到任意程序,该程序必须在每个任务跟踪器节点上执行.
在大多数用于设置 hadoop 集群的 linux 发行版上,python、bash、ruby、perl...都已经安装,但没有什么可以阻止为您最喜欢的脚本或编译的编程语言构建您自己的执行环境。
问)PHP 不是多线程的吗?
A) 是的,但是,我们可以通过一些方法使 PHP 成为多线程的。例如使用:pnctl_fork()(但是,这在 Windows 中不起作用)
在使用 hadoop 使用脚本语言之前,您应该始终牢记的问题不是“哪种脚本语言?”因为什么都可以。
但是,java和脚本语言的区别,就是“当我们使用脚本语言时,子节点的心跳不会发送到父节点”。