Spark 与 Hadoop 集成
这部分介绍了如何从 Spark 中去访问各种各样的 Hadoop 生态系组件。
从 Spark 中访问 HBase
您可以使用 Spark 来处理到 HBase 中的数据。请看 使用 Spark 导入数据到 HBase。
您也可以从 Spark 到 HBase 使用 Spark 来结合 Apache Kafka 到 stream 的数据。请看 使用 Spark 和 Kafka 导入数据到 HBase。
提交 Spark 应用程序的主机,或者运行 spark-shell 的主机,或者运行 pyspark 的主机必须有一个 HBase gateway 角色 定义在 Cloudera Manager 中并且 客户端配置 被部署了。
Kerberized 环境中的局限性
在 Kerberized 群集中 Spark 应用程序有下列的局限性 :
- 应用程序必须每 7 天重启一次(ps : 坑爹呀!←_←)。
如果群集已经启用了 HA,在您的命令行中必须指定 keytab 和 principal 参数(与使用 kinit 相反)。例如 :
spark-shell --jars MySparkHbaseApp.jar --principal ME@DOMAIN.COM --keytab /path/to/local/keytab ...
spark-submit --class com.example.SparkHbaseApp --principal ME@DOMAIN.COM --keytab /path/to/local/keytab SparkHBaseApp.jar [ application parameters....]"
更多的信息请看 Spark 身份认证。
从 Spark 中访问 Hive
提交 Spark 应用程序的主机,或者运行 spark-shell 的主机,或者运行 pyspark 的主机必须有一个 Hive gateway 角色 定义在 Cloudera Manager 中并且 客户端配置 被部署了。
从 Oozie 中运行 Spark Jobs
对于 CDH 5.4 和更高的版本您可以从 Oozie 中使用 Spark action 调用 Spark Job。更多关于 Spark action 的信息请看 Oozie Spark Action 扩展。
在 CDH 5.4 中,当运行 action 时去启动 动态分配,在 Oozie workflow 中指定以下配置 :
<spark-opts>--conf spark.dynamicAllocation.enabled=true --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.minExecutors=1 </spark-opts>
如果您已经在 Cloudera Manager 中启用了 shuffle 服务,您不需要去指定 spark.shuffle.service.enabled。