有一个正在运行的 Hadoop 集群。 我已经下载了 Hadoop 发行版(在本例中为 0.20.205.0)
我需要创建一些能够在该集群上调用 Hadoop 的 shell 脚本 (bash/zsh/perl)。理想情况下,它应该能够以这种方式从 Sqoop 脚本中调用:
exec ${HADOOP_HOME}/bin/hadoop com.cloudera.sqoop.Sqoop "$@"
如何调用 Hadoop 并提供 namenode/jobtracker URI? 如何为 Sqoop 和数据库驱动程序提供额外的库?
最佳答案
使用 hadoop 通用选项应该足够简单 - 我假设您已经为集群配置了 ${HADOOP_HOME}/conf
的内容(即 core-site.xml 和 mapred-site.xml)。 XML)
exec ${HADOOP_HOME}/bin/hadoop com.cloudera.sqoop.Sqoop \
-libjars myjar1.jar,myjar2,jar "$@"
在这里,您通过 -libjars
选项传递要放置在类路径中的 jars。
如果您有多个要定位的集群,那么您只需要为每个集群创建不同的 conf 文件夹并在调用 hadoop 脚本之前设置 HADOOP_CONF_DIR
环境变量,或者您可以使用 -Dkey=value
通用参数来适本地设置 fs.default.name
和 mapred.job.tracker
:
exec ${HADOOP_HOME}/bin/hadoop com.cloudera.sqoop.Sqoop \
-libjars myjar1.jar,myjar2,jar \
-Dfs.default.name=hdfs://namenode-servername:9000 \
-Dmapred.job.jobtracker=jobtracker-servername:9001 \
"$@"
关于java - 如何创建和配置 Hadoop 客户端脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101225/