我最近在java中编写了几个map / reduce程序。但我也知道像php这样的脚本语言也可以使用。但是,大多数人都推荐使用java或python。我目前在php工作。所以我想知道哪种语言更适合地图/减少程序开发?
用于map / reduce实现的php的一个主要缺点是,它不是多线程的。 另外,hadoop拥有广泛的类,接口和方法框架,特别是在java中,php程序无法利用。而且,php并不是为处理繁重的数据处理任务而设计的。
那么有人可以从广义上告诉我哪一个选择作为地图/减少实施的首选武器?
答案 0 :(得分:7)
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和脚本语言之间的区别在于,“当我们使用脚本语言时,不会将子节点的Heart Beat发送到父节点”。