如何在hadoop中控制日志记录功能?Hadoop使用默认的log4j.properties文件来控制日志.我的用例是控制我的类生成的日志.
像JobTracker,TaskTracker,NameNode和DataNode守护进程这样的Hadoop 守护进程使用来自各自主机节点的log4j.properties文件hadoop-conf-directory
.rootLogger设置为"INFO,console",它将INFO级别的所有消息记录到控制台.
我使用Oozie Workflow触发hadoop作业.我尝试通过设置-Dlog4j.configuration=path/to/log4j.properties
系统属性将我的自定义log4j.properties文件传递给作业,但它无法正常工作.仍然,它从默认属性中获取log4j属性.
我不应该触摸默认的log4j.properties文件.
我正在使用Oozie-v3.1.3-incubating,hadoop-v0.20和cloudera CDH-v4.0.1.
如何覆盖默认的log4j.properties文件?或者我如何控制我的类的日志?
我只有mapper类来创建用于批量加载到HBase的文件,我已经为单元测试编写了一个MRUnit.
虽然预期结果和重新结果相同,但MRUnit失败并显示"缺少预期输出"消息 .
预期产量: (4b 65 79 31, {"totalColumns":1,"families":{"default":[{"timestamp":9223372036854775807,"qualifier":"default","vlen":6}]},"row":"Key1"})
实际产量: (4b 65 79 31, {"totalColumns":1,"families":{"default":[{"timestamp":9223372036854775807,"qualifier":"default","vlen":6}]},"row":"Key1"})
我哪里错了?是不是ImmutableBytesWritable或Put有问题?
当我尝试使用以下代码运行 oozie hive 操作时
<action name="Hive-Node">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<job-xml>hive-site.xml</job-xml>
<prepare>
<mkdir path="${nameNode}/hive/output"/>
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
<property>
<name>hive.insert.into.multilevel.dirs</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>${hbaseZooQuorum}</value>
</property>
</configuration>
<script>${HIVE_QUERY_FILE}</script>
</hive>
<ok to="End" />
<error to="Fail" />
</action>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error: E0701 : E0701: XML schema error, cvc-complex-type.2.4.a: Invalid content was found starting with element 'prepare'. One of '{"uri:oozie:hive-action:0.2":configuration, "uri:oozie:hive-action:0.2":script}' is expected.
Run Code Online (Sandbox Code Playgroud)
但是在我修改了 hive action 中声明标签的顺序<job-xml>...</job-xml>
后<prepare>...</prepare>
,即移动后,它工作正常。
是否有必要在 oozie 操作中遵循这些命令?