有一个正在运行的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和DB驱动程序提供额外的库?
答案 0 :(得分:1)
使用hadoop通用选项应该足够简单 - 我假设你已经为你的集群配置了${HADOOP_HOME}/conf
的内容(即core-site.xml和mapred-site.xml)
exec ${HADOOP_HOME}/bin/hadoop com.cloudera.sqoop.Sqoop \
-libjars myjar1.jar,myjar2,jar "$@"
在这里,您可以通过-libjars
选项将jar放置在类路径上。
如果您想要定位多个群集,那么您只需要为每个群集创建不同的conf文件夹,并在调用hadoop脚本之前设置HADOOP_CONF_DIR
环境变量,或者您可以使用适当设置-Dkey=value
和fs.default.name
的{{1}}个通用参数:
mapred.job.tracker
答案 1 :(得分:0)
我的问题实际上是运行Sqoop。 所以我通过简单地提供-fs和-jt参数作为Sqoop命令的第一个参数(例如sqoop-import)来解决它
sqoop-import \
-fs $HADOOP_FILESYSTEM -jt $HADOOP_JOB_TRACKER \
--connect $DB_CONNECTION_STRING --username $DB_USER -P \
--outdir /home/user/sqoop/generated_code \
"$@" # <- other parameters