<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Carpe Diem &#187; hadoop</title>
	<atom:link href="http://www.sssg.org/blogs/naoya/archives/tag/hadoop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sssg.org/blogs/naoya</link>
	<description>Who knows hacker is?</description>
	<lastBuildDate>Sun, 25 Jul 2010 23:18:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hadoop で syslog 経由でログを出力する方法</title>
		<link>http://www.sssg.org/blogs/naoya/archives/1659</link>
		<comments>http://www.sssg.org/blogs/naoya/archives/1659#comments</comments>
		<pubDate>Wed, 13 Jan 2010 13:11:29 +0000</pubDate>
		<dc:creator>naoya</dc:creator>
				<category><![CDATA[day]]></category>
		<category><![CDATA[hadoop]]></category>

		<guid isPermaLink="false">http://www.sssg.org/blogs/naoya/?p=1659</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="&lt;a href=&quot;http://hadoop.apache.org/&quot;&gt;Welcome to Apache Hadoop!&lt;/a&gt;">Hadoop</a> を使いはじめたのですが、Hadoop で出力されるログを syslog 経由で出力するように設定してみました。最初は、log4j.properties だけ書き換えればよいかと思ったのですが、これだけでは syslog 経由でログを出力できませんでした。</p>
<p>Hadoop は、<a href="http://archive.cloudera.com/docs/cdh.html">CDH のバージョン 0.18.3</a> を使っています。</p>
<p>まず、/usr/lib/hadoop/bin/hadoop-daemon.sh で、log4j の logger 環境変数を使えるように次のように変更します。次のパッチでは、念のためローカルのログファイル名も変更できるようにしてあります。</p>
<blockquote><p>/usr/lib/hadoop/bin/hadoop-daemon.sh<br />
28a29,30&gt; #   HADOOP_LOGFILE  The log file name. Default is hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.log<br />
&gt; #   HADOOP_ROOT_LOGGER   The root appender. Default is INFO,console<br />
84a87,94<br />
&gt; # log configuration<br />
&gt; if [ "$HADOOP_LOGFILE" = "" ]; then<br />
&gt;   export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.log<br />
&gt; fi<br />
&gt; if [ "$HADOOP_ROOT_LOGGER" = "" ]; then<br />
&gt;   export HADOOP_ROOT_LOGGER=&#8221;INFO,DRFA&#8221;<br />
&gt; fi<br />
&gt;<br />
86,87d95&lt; export HADOOP_LOGFILE=hadoop-$HADOOP_IDENT_STRING-$command-$HOSTNAME.log<br />
&lt; export HADOOP_ROOT_LOGGER=&#8221;INFO,DRFA&#8221;</p></blockquote>
<p>次に、/etc/hadoop/conf/hadooop-env.sh に、次のように追加します。</p>
<blockquote><p>export HADOOP_ROOT_LOGGER=&#8221;INFO,SYSLOG,DRFA&#8221;</p></blockquote>
<p>最後に、/etc/hadoop/conf/log4j.properties に syslog で出力するための log4j の appender を追加します。</p>
<blockquote><p>#<br />
# syslog<br />
#<br />
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender<br />
log4j.appender.SYSLOG.facility=local0<br />
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.SYSLOG.layout.ConversionPattern=%p %c{2}: %m%n<br />
log4j.appender.SYSLOG.SyslogHost=127.0.0.1<br />
log4j.appender.SYSLOG.threshold=INFO<br />
log4j.appender.SYSLOG.Header=true<br />
log4j.appender.SYSLOG.FacilityPrinting=true</p></blockquote>
<p>あとは、Hadoop を再起動すれば、127.0.0.1 のサーバに 514 番ポート、UDP、local0 ファシリティ、にて Hadoop のログが転送されます。どうやら、TCP にすることができないみたいです。</p>
<p>hadoop-daemon.sh の方は、本家でバージョン 0.21 で<a href="http://issues.apache.org/jira/browse/HADOOP-5787">対応予定</a>のようです。</p>
<p>参考資料</p>
<ul>
<li><a href="http://wiki.apache.org/hadoop/HowToConfigure">HowToConfigure &#8211; Hadoop Wiki</a></li>
<li><a href="http://mail-archives.apache.org/mod_mbox/hadoop-common-user/200908.mbox/%3C480D7E03-6E9F-4917-BE31-A82D2A42D9C8@cse.unl.edu%3E">Re: syslog-ng and hadoop</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sssg.org/blogs/naoya/archives/1659/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
