
hadoop 专题
文章平均质量分 85
jlins_you
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
namenode任务线程之FSNamesystem$SafeModeMonitor
前面5个任务线程一般会一直运行,而SafeModeMonitor当namenode满足一定条件就不执行检测了,在分析这个后台任务之前我们先来看下什么是safeMode,摘录《Hadoop权威指南》10.1.2安全模式的定义如下: 名称节点启动时,它所做的第一件事情是加载其镜像文件(fsimage)到内存,并应用编辑日志(edits)中的编辑记录。一旦重新创建与...原创 2012-04-19 16:27:10 · 217 阅读 · 0 评论 -
Block类图描述
前面2个描述了datanode以及INodeFile,还缺个Block的描述,这里补上,针对block的结构还有些不是特别明确,这个需要举例子才好说明,先把大体的类图结构描述下 Block Java代码 /************************************************** ...原创 2012-04-21 21:32:25 · 218 阅读 · 0 评论 -
INodeFile类图描述
针对具体存储在hdfs上的文件有个对象来模型化他那就是INodeFile这个类,因为hdfs文件系统也是树形结构的,故衍生出一些其他类来模型化这些对象,见类图描述如下 INode Java代码 /** * We keep an in-memory representation of the file/blo...原创 2012-04-21 21:32:05 · 156 阅读 · 0 评论 -
DatanodeDescriptor类图描述
本想画个UML里的标准类图的,可惜linux下的画图工具都不那么好使,然后装了xmind,发现用这个画也还可以,就是每次图的位置不好定。 这里涉及到的其他类将在单独的blog里分析,因为整个图实在太大了,我发现用xmind搞的美观而且还方便记忆。 光有图还不能说清他们的具体功能,故增加点文字描述信息 NodeJava代码 ...原创 2012-04-21 21:31:41 · 156 阅读 · 0 评论 -
namenode维护的变量有哪些
之前的blog都是讲namenode的动态行为,今天来分析下静态数据,例如namenode到底维护了哪些变量。namenode的主要工作都在FSNamesystem这个类中(有4749行代码),这里为了分析方便,我将用真实的例子来讲,例如我将文件的分块大小设置为512字节,这样是为了方便测试,然后我从本地copy了一个622字节的文件到hdfs文件系统上,这样文件就会被分为2块了,从dat...原创 2012-04-21 21:31:15 · 148 阅读 · 0 评论 -
hadoop FSNamesystem中的recentInvalidateSets
今天早就回来了,然后偷懒了2个小时,现在才开始分析代码,之前在几篇文章里都有说将某些block加入到recentInvalidateSets,然后也没分析这个set具体的作用,以及后续的处理,今天就单独来说下他(看完代码才发现原来这么简单,其实应该在ReplicationMonitor中分析的,可惜当时太晚了没心思分析了)分析之前先看下他的数据结构Java代码 ...2012-04-20 20:28:56 · 129 阅读 · 0 评论 -
hadoop namenode后台jetty web
现在开始分析namenode启动时开启的第2类线程,jetty web访问hadoop的功能。hadoop提供了一个很简洁但是很强大的web后台用于管理hdfs与mapreduce等,大家知道java访问web的方式就是servlet的方式,然后jetty这个轻量级的web server又提供了 HTTP server, HTTP client, 和servlet container的功...2012-04-20 20:28:10 · 322 阅读 · 0 评论 -
namenode任务线程之RPC
namenode需要监听和收集各个datanode的信息,需要在某个端口监听,然后等待datanode发送一些消息过来,同时这个端口也负责收集那些注册到namenode来的datanode的信息(心跳信息中带有其他元数据信息,而不是简单的心跳而已)由Java代码 dfs.namenode.handler.count 这个参数...原创 2012-04-20 20:27:30 · 638 阅读 · 0 评论 -
hadoop各配置文件加载情况
之前依据名字想当然的把fs.default.name配置在hdfs-site.xml里,结果执行ls copy等命令都是本地的方式,后调试也未果,故想了下之前自己的操作,然后看了下代码发现都是配置惹的问题,故在此总结下各配置项的加载情况。在hadoop 0.20.2版本中存在如下几个配置文件Java代码 core-default.xml ...原创 2012-04-20 20:27:29 · 169 阅读 · 0 评论 -
hadoop远程调试
之前的一篇blog里讲述了hadoop单机版调试的方法,那种调试只限于单机运行hadoop命令而已,对于运行整个hadoop环境而言是不可取的,因为hadoop会开启多个java进程,如果统一为一个端口启动,则启动会报错说端口被占用,同时对于jdwp agent而言也只能加载一次,故调试时单机只能有一个java进程开启debug模式,其实这个也足够了。 通过分析hadoop的启动脚本不难发...原创 2012-04-20 20:27:24 · 123 阅读 · 0 评论 -
namenode任务线程之PendingReplicationMonitor
这里描述下PendingReplicationMonitor 这个后台线程的任务 PendingReplicationBlocks$PendingReplicationMonitor 首先来看下PendingReplicationBlocks 这个类的作用看下java doc里的类注释说明如下: Java代码 ...原创 2012-04-17 23:52:14 · 328 阅读 · 0 评论 -
namenode启动开启了那些任务线程
第一类:后台任务线程 Java代码 org.apache.hadoop.hdfs.server.namenode.PendingReplicationBlocks$PendingReplicationMonitor org.apache.hadoop.hdfs.server.namenode.FSNamesystem$Heart...原创 2012-04-17 23:52:09 · 217 阅读 · 0 评论 -
hadoop jmx
本地起了namenode以后就会注册一些Metrics 到本地的MBeanServer上去,这样你随时可以查看当前namenode上那些Metrics状态了,例如NamenodeActivity 和RpcActivity等等。 0.20.2版本的hadoop还没提供原生的访问jmx的接口出来,不过这个倒是留了一些可配置参数在hadoop-env.sh里,例如jmxremote的port,这...原创 2012-04-17 23:52:06 · 128 阅读 · 0 评论 -
hadoop-metrics配置说明
hadoop提供了各种运行时指标数据 默认的监测配置如下 Java代码 # Configuration of the "dfs" context for null dfs.class=org.apache.hadoop.metrics.spi.NullContext ...原创 2012-04-17 23:52:02 · 413 阅读 · 0 评论 -
zookeeper集群配置注意项
项目中需要使用hbase,故准备在本机搭建hbase,考虑到hbase对zookeeper的依赖,故先搭建zookeeper集群,选择的zookeeper版本是 3.3.2,在搭建时遇到一些问题,在这里记录下。 1:集群配置中Java代码 dataDir=/home/dikar/hadoop/zookeeperTest ...原创 2012-04-21 21:32:43 · 119 阅读 · 0 评论 -
hadoop监控
通过从hadoop的 hadoop-metrics文件中就可以知道hadoop对 Ganglia 是有支持的,而且很多运维hadoop集群的都是使用的这个作为监控管理工具,不过也有其他解决方案,例如hadoop自家的 Chukwa ,以下收集了一些比较好的资料。 Chukwa在百度的应用实践http://hi.baidu.com/ops%5Fbd/blog/item/7...原创 2012-04-22 15:21:49 · 259 阅读 · 0 评论 -
namenode任务线程之FSNamesystem$ReplicationMonitor
终于可以开始分析ReplicationMonitor,他依赖了其他的任务数据,我们先来看看他的类的java docJava代码 /** * Periodically calls computeReplicationWork() */ 说明反而没有说具体的工作内容,而是直接说call某个...原创 2012-04-19 16:27:04 · 146 阅读 · 0 评论 -
namenode任务线程之DecommissionManager$Monitor
因为ReplicationMonitor 依赖了其他4个所以这里先分析下DecommissionManager$MonitorDecommissionManager主要是负责节点退役或者说节点停用,而Monitor负责定时来检测这些节点的退役状态,在DecommissionManager里其实也只有Monitor在真正执行功能,我们来看下Monitor的检测实现, 首先看下影响...原创 2012-04-19 16:26:58 · 127 阅读 · 0 评论 -
namenode任务线程之LeaseManager$Monitor
今天分析namenode里的后台任务线程LeaseManager$Monitor,租约管理器LeaseManager负责管理租约(对于租约的概念可以看我上一篇文章),需要定时查看那些过期的租约然后销毁他们,这个从Monitor的注释中也可以看的出 Java代码 * Monitor checks for leases that have e...原创 2012-04-19 16:26:53 · 138 阅读 · 0 评论 -
start-all.sh究竟做了什么?
当搭建好了hadoop环境,我们迫不及待的就开始执行start-all.sh脚本,那么这个脚本具体做什么呢 Java代码 1:hadoop-config.sh //想使用自己的配置的,需要在这里设置了 2:start-dfs.sh //start dfs daemons ...原创 2012-04-19 16:26:47 · 1319 阅读 · 0 评论 -
查看fsimage edits的小技巧
为了大家方便在hadoop目录和其他目录之间跳转,我建议定一个变量叫HADOOP_INSTALL 然后放在.bashrc里,这样每次想去hadoop的目录只需要输入 Python代码 cd $HADOOP_INSTALL 或者可以alias 一个cdh 命令 例如 Python代码 ...原创 2012-04-18 21:00:34 · 231 阅读 · 0 评论 -
hdfs-default配置说明等
为方便查询故在此列出Xml代码 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <...原创 2012-04-18 20:59:47 · 151 阅读 · 0 评论 -
core-default配置说明等
为了以后查找方便,故将配置说明等列在这里Xml代码 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> ...原创 2012-04-18 20:59:24 · 159 阅读 · 0 评论 -
hadoop namenode format做了什么?
一看到format就和磁盘格式化联想到一起,然后这个format是对hdfs来说的,所以有些人害怕真的是格式化自己的文件系统了,其实大可不必担心。 具体的实现format的功能是在 org.apache.hadoop.hdfs.server.namenode.FSImage 这个类的format(StorageDirectory sd)方法中,我们首先大概看下方法说明: ...2012-04-18 20:58:47 · 112 阅读 · 0 评论 -
hadoop core-default hdfs-default默认配置
Java代码 dfs.replication.interval=3, fs.hsftp.impl=org.apache.hadoop.hdfs.HsftpFileSystem, dfs.safemode.extension=30000, ipc.server.tcpnodelay=false...原创 2012-04-18 20:58:05 · 280 阅读 · 0 评论 -
hbase之htable线程安全性
在单线程环境下使用hbase的htable是没有问题,但是突然高并发多线程情况下就出现问题了,然后细看htable的api说明 Java代码 * This class is not thread safe for updates; the underlying write buffer can * be cor...原创 2012-04-22 15:22:44 · 741 阅读 · 0 评论 -
hbase之scan的rowkey问题
最近使用到hbase做存储,发现使用scan的时候,返回的rowkey并不是特别友好 例如我insert的rowkey是 xyz_123_abc 调用KeyValue的getKeyString方法返回的String为 Java代码 kv\x00\x0Bxyz_123_abc\x02kvobj\x00\x00\x011\xD7\xB...原创 2012-04-22 15:22:27 · 273 阅读 · 0 评论 -
datanode启动开启了那些任务线程
今天开始分析datanode,首先看看datanode开启了哪些任务线程 第一类:org.apache.hadoop.hdfs.server.datanode.DataBlockScannerTIMED_WAITING for java.lang.Thread.sleep 第二类:org.apache.hadoop.hdfs.server.datanode.Data...原创 2012-04-22 15:22:16 · 120 阅读 · 0 评论 -
namenode这个类的主要功能
今天来总看下namenode这个类的主要功能首先看下这个类的注释说明: Java代码 /********************************************************** * NameNode serves as both directory namespace manager and ...原创 2012-04-22 15:22:05 · 668 阅读 · 0 评论 -
检测hadoop程序的小技巧
这里总结一些检测hadoop是否正常启动的一些小技巧 1:查看hadoop的进程,利用java自带的jps例如在master上执行后的输出 Python代码 [dikar@dikar logs]$ jps 6652 Sancho 3813 9760 Jps ...原创 2012-04-16 21:26:07 · 152 阅读 · 0 评论 -
搭建hadoop集群时的注意项
在这篇文章里讲述了一些配置的注意事项,我这里再补充一点自己的(如有不对恳请指出)Hadoop中的集群配置和使用技巧 分布式计算开源框架Hadoop入门实践(二)http://www.infoq.com/cn/articles/hadoop-config-tip 1:master 和 slaves机器上运行hadoop的用户名要一样,这个主要是由于ssh生成的key是依据用户...原创 2012-04-16 21:25:55 · 101 阅读 · 0 评论 -
调试hadoop的小技巧
在调试hadoop的时候,你第一点需要明确需要调试哪个类,然后调试时的上下文参数大概是什么样的,在上一篇里我讲了如何设置hadoop的调试,这里分享一点小的调试技巧。 例如我需要知道调试的类和上下文参数,那其实在启动脚本里就有的,我们不妨在启动时将这些输出来看,例如在hadoop的 Python代码 exec "$JAVA...原创 2012-04-16 21:25:44 · 138 阅读 · 0 评论 -
运行Hadoop遇到的问题
运行Hadoop遇到的问题1, 伪分布式模式不能用root?? 以root执行start-all.sh出现 localhost: Unrecognized option: -jvm localhost: Could not create the Java virtual machine. 下面是别人的解决方案:(可...原创 2012-04-12 22:00:12 · 120 阅读 · 0 评论 -
Hadoop 安装问题和解决方案
前几天在Window和Linux主机安装了Hadoop,版本是hadoop-0.21.0,出现了一些环境的问题,记录一下,做下备忘 1. cygwin启动Hadoop时候,总是报以下异常: java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName问题分析:出现该错误通常是找不到Main函数,而Ha...2012-04-10 13:21:00 · 163 阅读 · 0 评论 -
运行Hadoop遇到的问题
运行Hadoop遇到的问题1, 伪分布式模式不能用root?? 以root执行start-all.sh出现 localhost: Unrecognized option: -jvm localhost: Could not create the Java virtual machine. 下面是别人的解决方案:(可以...2012-04-10 13:19:59 · 119 阅读 · 0 评论 -
hadoop使用过程中的一些小技巧
hadoop使用过程中的一些小技巧 -------------------------------------------------------------------------------- 1.在Eclipse下的hadoop mapred调试 对于小数据量的调试,可以再本机下载并安装cywin,之后将cywin的bin目录添加到系统的Path环境变量中,将hadoop的core包添加到c...2012-04-09 10:16:18 · 166 阅读 · 0 评论 -
运行hadoop时的一些技巧
//用来给key分区的,需要实现Partitioner接口 conf.setPartitionerClass(Partitioner.class); //分组,跟分区不同 conf.setOutputValueGroupingComparator(theClass); //中间合并程序,一般跟reduce类似 conf.setCombinerClass(ComReduce.class);...2012-04-09 10:14:42 · 119 阅读 · 0 评论 -
分布式计算开源框架Hadoop入门实践(二)
其实参看Hadoop官方文档已经能够很容易配置分布式框架运行环境了,不过这里既然写了就再多写一点,同时有一些细节需要注意的也说明一下,其实也就是这些细节会让人摸索半天。Hadoop可以单机跑,也可以配置集群跑,单机跑就不需要多说了,只需要按照Demo的运行说明直接执行命令即可。这里主要重点说一下集群配置运行的过程。环境7台普通的机器,操作系统都是Linux。内存和CPU就不说了,反...原创 2012-04-08 09:50:23 · 98 阅读 · 0 评论 -
Hadoop 实践入门
1 实验环境搭建1.1 准备工作ubuntu/redhatJDK/openjdkHadoopEclipsevmvare/virtureBox1.1.1 ubuntu 安装 下载最新版本ubuntu 11.10。 安装注意事项: 1、关闭防火墙:shell命令 sudo ufw ...2012-04-08 09:46:35 · 132 阅读 · 0 评论 -
用 Hadoop 进行分布式数据处理(入门)
摘要: 尽管 Hadoop 是一些大型搜索引擎数据缩减功能的核心部分,但是它实际上是一个分布式数据处理框架。搜索引擎需要收集数据,而且是数量极大的数据。 尽管 Hadoop 是一些大型搜索引擎数据缩减功能的核心部分,但是它实际上是一个分布式数据处理框架。搜索引擎需要收集数据,而且是数量极大的数据。作为分布式框架,Hadoop 让许多应用程...原创 2012-04-08 09:44:26 · 203 阅读 · 0 评论