我正在试验一个名为vowpalwabbit的机器学习软件包。要在hadoop集群上运行vowpal wabbit,建议执行以下操作:
hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-streaming-2.0.0-mr1-cdh4.3.0.jar \
-Dmapred.job.name="vw allreduce $in_directory" \
-Dmapred.map.tasks.speculative.execution=true \
-Dmapred.reduce.tasks=0 \
-Dmapred.child.java.opts="-Xmx100m" \
-Dmapred.task.timeout=600000000 \
-Dmapred.job.map.memory.mb=1000 \
-input <in_directory> \
-output <out_directory> \
-file /home/produser/vowpal_wabbit/vowpalwabbit/vw \
-file /usr/lib64/libboost_program_options.so.5 \
-file /lib64/libz.so.1 \
-file /home/produser/vowpal_wabbit/cluster/runvw-yarn.sh \
-mapper /home/produser/vowpal_wabbit/cluster/runvw-yarn.sh \
-reducer NONE
其中runvw-yarn.sh作为Map器,将在每台机器上调用vowpal wabbit的命令,并在其中存储数据
在我把数据传进来之前,我必须重新格式化它。我尝试使用hivequery从网格中选择数据,重新格式化它,然后将其传递给“hadoopjar”命令。但我不想将重新格式化的数据存储在集群上以浪费空间。所以我不知道在“hadoopjar”命令的“-input”选项后面应该放什么。
所以我的问题是,有没有办法在“-input”命令后面加上类似“stdin”的东西?另外,在选择数据之后,我应该将“hadoopjar”命令放在我的配置单元查询中的什么位置?
p、 我找到了“hive-servicejar”,它看起来像hadoopjar,这有帮助吗?
谢谢您!几周前我刚开始学习hadoop和hive,所以如果您有更好的设计或解决方案,请随时告诉我。我可以重写每件事。
1条答案
按热度按时间f2uvfpb91#
似乎要运行两轮mapreduce:第一轮是hive查询,第二轮是mapreduce流。就我而言,要使用多轮mapreduce作业,我们总是需要在轮之间向hdfs写入/读取hdfs。这就是为什么mapreduce总是被称为批处理操作。
所以,你的问题的答案是否定的。