<?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>四季如風 &#187; Hadoop</title>
	<atom:link href="http://www.hjide.com/category/hadoop/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hjide.com</link>
	<description>每一天我們都在進步</description>
	<lastBuildDate>Wed, 08 Feb 2012 13:48:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>bring splittable LZO compression to Hadoop</title>
		<link>http://www.hjide.com/article/424.htm</link>
		<comments>http://www.hjide.com/article/424.htm#comments</comments>
		<pubDate>Thu, 22 Apr 2010 10:51:11 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[lzo]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=424</guid>
		<description><![CDATA[1、下載kevinweil-hadoop-lzo 2、rpm -ivh liblzo2_2-2.03-6.el4.x86_64.rpm 3、rpm -ivh libminilzo2-2.03-6.el4.x86_64.rpm 4、rpm -ivh lzo-2.03-6.el4.x86_64.rpm 5、rpm -ivh lzo-devel-2.03-6.el4.i386.rpm 6、cd kevinweil-hadoop-lzo      ant compile-native tar 7、進入build目錄下，把hadoop-lzo-0.4.0.jar拷貝到hadoop的lib目錄，native目錄也拷貝到hadoop的lib目錄下 編輯core-stie.xml文件，增加         &#60;property&#62;                 &#60;name&#62;io.compression.codecs&#60;/name&#62;                 &#60;value&#62;com.hadoop.compression.lzo.LzopCodec&#60;/value&#62;         &#60;/property&#62;         &#60;property&#62;                 &#60;name&#62;io.compression.codec.lzo.class&#60;/name&#62;                 &#60;value&#62;com.hadoop.compression.lzo.LzoCodec&#60;/value&#62;         &#60;/property&#62; 使map的中間結果也是用lzo壓縮，編輯mapred-site.xml文件，增加         &#60;property&#62;                 &#60;name&#62;mapred.compress.map.output&#60;/name&#62;                 &#60;value&#62;true&#60;/value&#62;         &#60;/property&#62;         &#60;property&#62;                 &#60;name&#62;mapred.map.output.compression.codec&#60;/name&#62;                 &#60;value&#62;com.hadoop.compression.lzo.LzoCodec&#60;/value&#62;         &#60;/property&#62; 7、安裝lzop [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/424.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下mount HDFS</title>
		<link>http://www.hjide.com/article/421.htm</link>
		<comments>http://www.hjide.com/article/421.htm#comments</comments>
		<pubDate>Thu, 22 Apr 2010 10:05:10 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[dfs]]></category>
		<category><![CDATA[fuse]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=421</guid>
		<description><![CDATA[1、下載安裝fuse。Linux kernel > 2.6.9 downloaad fuse-2.8.3.tar.gz 解壓configure &#038; make &#038; make install 2、modprobe fuse 3、export JAVA_HOME= 4、export HADOOP_HOME= 5、vi $HADOOP_HOME/src/contrib/fuse-dfs/src/fuse_dfs_wrapper.sh 修改HADOOP_HOME, JAVA_HOME 6、cd $HADOOP_HOME 7、ant compile -Dcompile.c++=true -Dlibhdfs=true 確保你的autoconf版本>2.61,ant 版本>1.7.1,給$HADOOP_HOME/src/contrib/fuse-dfs/configure，$HADOOP_HOME/src/c++/pipes/configure，$HADOOP_HOMEsrc/c++/utils/configure增加執行權限 (chmod +x FILE) 8、ln -s $HADOOP_HOME/build/c++/Linux-amd64-64/lib $HADOOP_HOME/build/libhdfs 9、export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$HADOOP_HOME/build/libhdfs:$JAVA_HOME/jre/lib/amd64/server 10、ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1 如果以上都執行正常那就可以開始試著mount了 11、mkdir /export/hdfs (or wherever you want to mount it) 12、$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh dfs://hadoop_server1.foo.com:9000 [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/421.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>还在用19的赶紧升级到20吧</title>
		<link>http://www.hjide.com/article/354.htm</link>
		<comments>http://www.hjide.com/article/354.htm#comments</comments>
		<pubDate>Fri, 19 Mar 2010 07:30:36 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[升级]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=354</guid>
		<description><![CDATA[把集群升级到20.1之后，map/reduce的效率提升的不是一点半点啊。 升级步骤： 执行./bin/stop-all.sh mv 旧版本到一个新的目录 把配置好的新版本mv过来 同步到各个机器上 hadoop namenode -upgrade 启动集群 原先在19.2上需要执行2个多小时的job，到新版本只需要1小时零几分就能完成了。]]></description>
		<wfw:commentRss>http://www.hjide.com/article/354.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop简介</title>
		<link>http://www.hjide.com/article/347.htm</link>
		<comments>http://www.hjide.com/article/347.htm#comments</comments>
		<pubDate>Thu, 18 Mar 2010 07:52:28 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=347</guid>
		<description><![CDATA[集群搭建 通常，集群里的一台机器被指定为 NameNode，另一台的机器被指定为JobTracker，这些机器是masters。余下的机器即作为DataNode也作为TaskTracker。这些机器是slaves。 对Hadoop的配置通过conf/目录下的两个重要配置文件完成： 此外，通过设置conf/hadoop-env.sh中的变量为集群特有的值，你可以对bin/目录下的Hadoop脚本进行控制。 配置Hadoop守护进程的运行参数 这部分涉及Hadoop集群的重要参数，这些参数在conf/hadoop-site.xml中指定。 hadoop-default.xml &#8211; 只读的默认配置。 hadoop-site.xml &#8211; 集群特有的配置。 参数 取值 备注 fs.default.name NameNode的URI。 hdfs://主机名/ mapred.job.tracker JobTracker的主机（或者IP）和端口。 主机:端口。 dfs.name.dir NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时，nametable数据将会被复制到所有目录中做冗余备份。 dfs.data.dir DataNode存放块数据的本地文件系统路径，逗号分割的列表。 当这个值是逗号分割的目录列表时，数据将被存储在所有目录下，通常分布在不同设备上。 mapred.system.dir Map/Reduce框架存储系统文件的HDFS路径。比如/hadoop/mapred/system/。 这个路径是默认文件系统（HDFS）下的路径， 须从服务器和客户端上均可访问。 mapred.local.dir 本地文件系统下逗号分割的路径列表，Map/Reduce临时数据存放的地方。 多路径有助于利用磁盘i/o。 mapred.tasktracker.{map&#124;reduce}.tasks.maximum 某一TaskTracker上可运行的最大Map/Reduce任务数，这些任务将同时各自运行。 默认为2（2个map和2个reduce），可依据硬件情况更改。 dfs.block.size 每个block的大小，byte   dfs.replication Block缺省的副本数量   mapred.reduce.tasks 每个任务启动的reduce task数量     HDFS架构和设计简介 HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器，负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个，负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间，用户能够以文件的形式在上面存储数据。从内部看，一个文件其实被分成一个或多个数据块，这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作，比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。 文件系统的名字空间 (namespace) HDFS支持传统的层次型文件组织结构。 Namenode负责维护文件系统的名字空间，任何对文件系统名字空间或属性的修改都将被Namenode记录下来 [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/347.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>作业配置</title>
		<link>http://www.hjide.com/article/304.htm</link>
		<comments>http://www.hjide.com/article/304.htm#comments</comments>
		<pubDate>Fri, 31 Jul 2009 09:24:49 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[配置]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=304</guid>
		<description><![CDATA[JobConf代表一个Map/Reduce作业的配置。 JobConf是用户向Hadoop框架描述一个Map/Reduce作业如何执行的主要接口。框架会按照JobConf描述的信息忠实地去尝试完成这个作业，然而： •一些参数可能会被管理者标记为 final，这意味它们不能被更改。 •一些作业的参数可以被直截了当地进行设置（例如： setNumReduceTasks(int)），而另一些参数则与框架或者作业的其他参数之间微妙地相互影响，并且设置起来比较复杂（例如： setNumMapTasks(int)）。 通常，JobConf会指明Mapper、Combiner(如果有的话)、 Partitioner、Reducer、InputFormat和 OutputFormat的具体实现。JobConf还能指定一组输入文件 (setInputPaths(JobConf, Path&#8230;) /addInputPath(JobConf, Path)) 和(setInputPaths(JobConf, String) /addInputPaths(JobConf, String)) 以及输出文件应该写在哪儿 (setOutputPath(Path))。 JobConf可选择地对作业设置一些高级选项，例如：设置Comparator； 放到DistributedCache上的文件；中间结果或者作业输出结果是否需要压缩以及怎么压缩； 利用用户提供的脚本(setMapDebugScript(String)/setReduceDebugScript(String)) 进行调试；作业是否允许预防性（speculative）任务的执行 (setMapSpeculativeExecution(boolean))/(setReduceSpeculativeExecution(boolean)) ；每个任务最大的尝试次数 (setMaxMapAttempts(int)/setMaxReduceAttempts(int)) ；一个作业能容忍的任务失败的百分比 (setMaxMapTaskFailuresPercent(int)/setMaxReduceTaskFailuresPercent(int)) ；等等。 当然，用户能使用 set(String, String)/get(String, String) 来设置或者取得应用程序需要的任意参数。然而，DistributedCache的使用是面向大规模只读数据的。]]></description>
		<wfw:commentRss>http://www.hjide.com/article/304.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>需要多少个Reduce</title>
		<link>http://www.hjide.com/article/302.htm</link>
		<comments>http://www.hjide.com/article/302.htm#comments</comments>
		<pubDate>Fri, 31 Jul 2009 09:20:24 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[reduce]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=302</guid>
		<description><![CDATA[Reduce的数目建议是0.95或1.75乘以 (&#60;no. of nodes&#62; * mapred.tasktracker.reduce.tasks.maximum)。 用0.95，所有reduce可以在maps一完成时就立刻启动，开始传输map的输出结果。用1.75，速度快的节点可以在完成第一轮reduce任务后，可以开始第二轮，这样可以得到比较好的负载均衡的效果。 增加reduce的数目会增加整个框架的开销，但可以改善负载均衡，降低由于执行失败带来的负面影响。 上述比例因子比整体数目稍小一些是为了给框架中的推测性任务（speculative-tasks） 或失败的任务预留一些reduce的资源。 无Reducer 如果没有归约要进行，那么设置reduce任务的数目为零是合法的。 这种情况下，map任务的输出会直接被写入由 setOutputPath(Path)指定的输出路径。框架在把它们写入FileSystem之前没有对它们进行排序。]]></description>
		<wfw:commentRss>http://www.hjide.com/article/302.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级 HDFS</title>
		<link>http://www.hjide.com/article/290.htm</link>
		<comments>http://www.hjide.com/article/290.htm#comments</comments>
		<pubDate>Thu, 23 Jul 2009 08:10:59 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=290</guid>
		<description><![CDATA[当HDFS从一个版本升级到另外一个版本的时候，NameNode和DataNode使用的文件格式有可能会改变。当你第一次使用新版本的时候，你要使用/opt/hadoop/bin/start-dfs.sh -upgrade告诉Hadoop 去改变HDFS版本（否则，新版本不会生效）。然后它开始升级，你可以通过 /opt/hadoop/bin/hadoop dfsadmin -upgradeProgress 命令来查看版本升级的情况。当然你可以使用/opt/hadoop/bin/hadoop dfsadmin -upgradeProgress details来查看更多的详细信息。当升级过程被阻塞的时候，你可以使用/opt/hadoop/bin/hadoop dfsadmin -upgradeProgress force 来强制升级继续执行（当你使用这个命令的时候，一定要慎重考虑）。 当HDFS升级完毕后，Hadoop依旧保留着旧版本的有关信息，以便你可以方便的对HDFS进行降级操作。你可以使用/opt/hadoop/bin/start-dfs.sh -rollback来执行降级操作。 Hadoop一次只保存一个版本的备份。当新版本运行几天以后还是没有出现什么问题，你就可以使用/opt/hadoop/bin/hadoop dfsadmin -finalizeUpgrade命令把旧版本的备份从系统中删掉了。删除以后rollback 命令就失效了。在另外一次版本升级前，这个操作是一定要做的。 获取帮助 &#8211; 跟 dfs 模块是一样的, 你可以使用 /opt/hadoop/bin/hadoop dfsadmin -help命令来获取特定的命令的一些用法。]]></description>
		<wfw:commentRss>http://www.hjide.com/article/290.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于map/reduce计算过程中的压缩和效率的对比问题</title>
		<link>http://www.hjide.com/article/262.htm</link>
		<comments>http://www.hjide.com/article/262.htm#comments</comments>
		<pubDate>Sun, 19 Jul 2009 15:43:36 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://www.hjide.com/?p=262</guid>
		<description><![CDATA[之前曾经介绍过对输入文件采用压缩可以提高部分计算效率。现在作更进一步的说明。 为什么压缩会提高计算速度？这是因为mapreduce计算会将数据文件分散拷贝到所有datanode上，压缩可以减少数据浪费在带宽上的时间，当这些时间大于压缩/解压缩本身的时间时，计算速度就会提高了。 hadoop的压缩除了将输入文件进行压缩外，hadoop本身还可以在计算过程中将map输出以及将reduce输出进行压缩。这种计算当中的压缩又有什么样的效果呢？ 测试环境：35台节点的hadoop cluster，单机2 CPU,8 core,8G内存，redhat 2.6.9, 其中namenode和second namenode各一台，namenode和second namenode不作datanode 输入文件大小为2.5G不压缩，records约为3600万条。mapreduce程序分为两个job: job1:map将record按user字段作key拆分，reduce中作外连接。这样最后reduce输出为87亿records，大小540G job2:map读入这87亿条数据并输出，reduce进行简单统计，最后的records为2.5亿条，大小16G 计算耗时54min 仅对第二个阶段的map作压缩(第一个阶段的map输出并不大，没有压缩的必要)，测试结果：计算耗时39min 可见时间上节约了15min，注意以下参数的不同。 不压缩时: Local bytes read=1923047905109 Local bytes written=1685607947227 压缩时： Local bytes read=770579526349 Local bytes written=245469534966 本地读写的的数量大大降低了 至于对reduce输出的压缩，很遗憾经过测试基本没有提高速度的效果。可能是因为第一个job的输出大多数是在本地机上进行map，不经过网络传输的原因。 附：对map输出进行压缩，只需要添加jobConf.setMapOutputCompressorClass(DefaultCodec.class) 经过实际测试运行，一个25个datanode的集群，输入是压缩的话Finished in: 1hrs, 24mins, 52sec，而不压缩的情况下Finished in: 1hrs, 7mins, 43sec因为压缩的输入一个压缩文件只能由一个job去处理，如果文件大小不一，那么执行的效率肯定低一些。 可在配置文件中直接加上对输出是否做压缩处理 对job的输出压缩 1 2 3 4 5 6 &#60;property&#62; &#60;name&#62;mapred.output.compress&#60;/name&#62; &#60;value&#62;true&#60;/value&#62; &#60;description&#62;Should [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/262.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决Hadoop报Name node is in safe mode 错误</title>
		<link>http://www.hjide.com/article/255.htm</link>
		<comments>http://www.hjide.com/article/255.htm#comments</comments>
		<pubDate>Fri, 10 Jul 2009 06:35:03 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=255</guid>
		<description><![CDATA[Safemode: 在Safemode(安全模式) 下，HDFS是只读的。任何的复制，创建，删除操作都是禁止的。在NameNode启动的时候，系统会自动进入这个模式，DataNode 会在这时候注册到NameNode中，并告诉NameNode它们拥有哪些文件块，NameNode由此知道哪些文件块的备份被丢失了。一直到一定百分比的的数量的DataNodes正常工作后，NameNode会退出安全模式。这个百分比在dfs.safemode.threshold.pct 中配置。当达到一定的百分比的时候，安全模式会自动退出，HDFS就允许正常操作了。用户可以通过dfsadmin -safemode enter &#124; leave &#124; get &#124; wait来操作安全模式，参数说明如下： •enter &#8211; 进入安全模式 •leave &#8211; 强制NameNode离开安全模式 •get &#8211; 返回安全模式是否开启的信息 •wait &#8211; 等待，一直到安全模式结束。 执行如下命令强制离开安全模式 /opt/hadoop/bin/hadoop dfsadmin -safemode leave]]></description>
		<wfw:commentRss>http://www.hjide.com/article/255.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>hadoop命令</title>
		<link>http://www.hjide.com/article/254.htm</link>
		<comments>http://www.hjide.com/article/254.htm#comments</comments>
		<pubDate>Fri, 10 Jul 2009 06:31:08 +0000</pubDate>
		<dc:creator>Jock</dc:creator>
				<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://blog.tgb.net.cn/?p=254</guid>
		<description><![CDATA[所有的hadoop命令均由bin/hadoop脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。 用法：hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]Hadoop有一个选项解析框架用于解析一般的选项和运行类。命令选项 描述&#8211;config confdir 覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf。 GENERIC_OPTIONS 多个命令都支持的通用选项。 COMMAND 命令选项S 各种各样的命令和它们的选项会在下面提到。这些命令被分为 用户命令 管理命令两组。常规选项下面的选项被 dfsadmin, fs, fsck和 job支持。 应用程序要实现 Tool来支持 常规选项。GENERIC_OPTION 描述 -conf &#60;configuration file&#62; 指定应用程序的配置文件。 -D &#60;property=value&#62; 为指定property指定值value。 -fs &#60;local&#124;namenode:port&#62; 指定namenode。 -jt &#60;local&#124;jobtracker:port&#62; 指定job tracker。只适用于job。 -files &#60;逗号分隔的文件列表&#62; 指定要拷贝到map reduce集群的文件的逗号分隔的列表。 只适用于job。 -libjars &#60;逗号分隔的jar列表&#62; 指定要包含到classpath中的jar文件的逗号分隔的列表。 只适用于job。 -archives &#60;逗号分隔的archive列表&#62; 指定要被解压到计算节点上的档案文件的逗号分割的列表。 只适用于job。用户命令hadoop集群用户的常用命令。archive创建一个hadoop档案文件。参考 Hadoop Archives.用法：hadoop archive [...]]]></description>
		<wfw:commentRss>http://www.hjide.com/article/254.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

