我是使用Spark和Hadoop的新手 .
Current Scenario:
我已经使用预先构建的二进制文件“spark-1.5.2-bin-hadoop2.6”在4节点集群上配置了Spark .
还有一个Hadoop-2.4集群,我的环境中有4个节点 .
What I want:
我计划对Hadoop集群中hdfs中的数据使用Hive HQL进行Spark RDD处理 .
Queries
-
我是否需要使用“spark-1.5.2-bin-hadoop2.4”二进制文件重新配置spark集群,否则当前的二进制文件将起作用 .
-
在两个不同的集群上(但在 Cloud 中的同一子网下)使用Spark和Hadoop在Spark over Hadoop上工作是一个好习惯 .
2 回答
我会说最好的做法是在同一个集群上运行spark和hadoop . 事实上,火花可以作为纱线应用程序运行(如果你使用--master yarn client进行spark-submit) . 为什么?归结为数据局部性 . 数据位置一般是hadoop和数据系统的基本概念 . 一般的想法是,您想要处理它的数据是如此之大,而不是移动数据,您宁愿将程序移动到数据所在的节点 . 因此,在spark的情况下,如果在不同的集群上运行它,则必须通过网络将所有数据从集群移动到另一个集群 . 在同一节点上进行计算和数据更有效 .
至于版本,有两个不同版本的hadoop集群可能会很痛苦 . 我建议你有两个不同的spark安装,每个集群一个,编译为适当的hadoop版本 .
您应该使用兼容版本的spark with hadoop .
正如最近所知,您可以参考此处的兼容性图表:http://hortonworks.com/wp-content/uploads/2016/03/asparagus-chart-hdp24.png