Мы два узла Hadoop пряжи кластера, то Hadoop 2,2, на котором мы запланировали два действия в одном рабочем процессе с использованием oozie, первое действие является питон карта-свертка потокового действия, а второй - sqoop export job, который фактически передает результат действия по уменьшению количества карт в базу данных mysql.Sqoop работа работает навсегда с помощью Oozie
Эффект потоковой передачи успешно выполняется, что приводит к запуску работы sqoop, которая остается запущенной навсегда.
stdout приводит к следующему.
Sqoop command arguments :
export
--connect
jdbc:mysql://localhost/database
--username
root
--password
root
--table
tableName
--direct
--export-dir
/user/hduser/oozieProject/workflow/output
=================================================================
Invoking Sqoop command line now >>>
2137 [main] WARN org.apache.sqoop.tool.SqoopTool - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2158 [main] INFO org.apache.sqoop.Sqoop - Running Sqoop version: 1.4.4.2.0.6.1-102
2170 [main] WARN org.apache.sqoop.tool.BaseSqoopTool - Setting your password on the command-line is insecure. Consider using -P instead.
2178 [main] WARN org.apache.sqoop.ConnFactory - $SQOOP_CONF_DIR has not been set in the environment. Cannot check for additional configuration.
2197 [main] INFO org.apache.sqoop.manager.MySQLManager - Preparing to use a MySQL streaming resultset.
2197 [main] INFO org.apache.sqoop.tool.CodeGenTool - Beginning code generation
2464 [main] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM `missedCalls` AS t LIMIT 1
2483 [main] INFO org.apache.sqoop.manager.SqlManager - Executing SQL statement: SELECT t.* FROM `missedCalls` AS t LIMIT 1
2485 [main] INFO org.apache.sqoop.orm.CompilationManager - HADOOP_MAPRED_HOME is /usr/local/hadoop
3838 [main] INFO org.apache.sqoop.orm.CompilationManager - Writing jar file: /tmp/sqoop-hduser/compile/21bd1d5fe13adeed4f46a09f8b3d38fe/missedCalls.jar
3847 [main] INFO org.apache.sqoop.mapreduce.ExportJobBase - Beginning export of missedCalls
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
Heart beat
свойства рабочих мест заключается в следующем
nameNode=hdfs://master:54310
jobTracker=master:8035
queueName=default
oozie.libpath=${nameNode}/user/hduser/share/lib
oozie.use.system.libpath=true
oozie.wf.rerun.failnodes=true
oozieProjectRoot=${nameNode}/user/hduser/oozieProject
appPath=${oozieProjectRoot}/workflow
oozie.wf.application.path=${appPath}
oozieLibPath=${oozie.libpath}
mapred.tasktracker.map.tasks.maximum=4
mapred.tasktracker.reduce.tasks.maximum=4
inputDir=${oozieProjectRoot}/data/*
outputDir=${appPath}/output
XML-технологический процесс выглядит следующим образом
<!--Oozie workflow file: workflow.xml -->
<workflow-app name="WorkflowStreamingMRAction-Python" xmlns="uri:oozie:workflow:0.1">
<start to="streamingaAction"/>
<action name="streamingaAction">
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${outputDir}"/>
</prepare>
<streaming>
<mapper>python mapper.py</mapper>
<reducer>python reducer.py</reducer>
</streaming>
<configuration>
<property>
<name>oozie.libpath</name>
<value>${oozieLibPath}/mapreduce-streaming</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>${inputDir}</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>${outputDir}</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property>
</configuration>
<file>${appPath}/mapper.py#mapper.py</file>
<file>${appPath}/reducer.py#reducer.py</file>
</map-reduce>
<ok to="sqoopAction"/>
<error to="killJobAction"/>
</action>
<action name="sqoopAction">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>export --connect jdbc:mysql://localhost/database --username root --password myPwd --table tableName --direct --export-dir /user/hduser/oozieProject/workflow/output</command>
</sqoop>
<ok to="end"/>
<error to="killJobAction"/>
</action>
<kill name="killJobAction">
<message>"Killed job due to error: ${wf:errorMessage(wf:lastErrorNode())}"</message>
</kill>
<end name="end" />
Пожалуйста, советы, что могло пойти не так?
Спасибо
Thank вы FengWang :) – Maverick
На самом деле причина, по которой мы столкнулись с проблемой, связана с MySQL. я настроил адрес привязки в файле my.cnf с localhost на IP-адрес машины, на которой находится сервер MySQL, и предоставил привилегии другим компьютерам в сети для доступа к серверу MySQL, а затем в команде sqoop мы заменили «localhost» на имя компьютера, в котором находится сервер. таким образом, решая мою проблему. – Maverick