研磨hadoop
文章平均质量分 81
对hadoop环境搭建、运行原理及开发进行深入的学习研究,是本人的收藏跟学习笔记等。
海兰
正在构思中
展开
-
[hadoop2.7.1]I/O之序列化(WritableSerialization)示例
首先先引入hadoop2.7.1中的一个工具类GenericsUtil,顾名思义,是用来处理java泛型的一个工具类,这个类很简单,但很实用。原创 2015-12-11 15:38:34 · 1573 阅读 · 0 评论 -
[hadoop2.7.1]I/O之序列化(serializer)
先来看下org.apache.hadoop.io.serializer的类图(hadoop2.7.1):原创 2015-12-03 10:33:36 · 2477 阅读 · 0 评论 -
[hadoop2.7.1]I/O之MapFile(排过序的SequenceFile)读、写、重建index实例
MapFile是排序后的SequenceFile,MapFile由两部分组成,分别是data和index。index文件的数据索引,主要记录了每个Record的key值,以及该Record在文件中的偏移位置。在MapFile被访问的时候,索引文件会被加载到内存,通过索引映射关系可迅速定位到指定Record所在文件位置,因此,相对SequenceFile而言,MapFile的检索效率是高原创 2015-11-08 10:02:53 · 2454 阅读 · 1 评论 -
[hadoop2.7.1]I/O之SequenceFile最新API编程实例(写入、读取)
根据上一篇的介绍,在hadoop2.x之后,hadoop中的SequenceFile.Writer将会逐渐摒弃大量的createWriter()重载方法,而整合为更为简洁的createWriter()方法,除了配置参数外,其他的参数统统使用SequenceFile.Writer.Option来替代,具体有:这些参数能够满足各种不同的需要,参数之间不存在顺序关系,这样减少了代码编写工作量,更为直观,便于理解,下面先来看看这个方法,后边将给出一个具体实例。原创 2015-11-06 22:13:34 · 6150 阅读 · 4 评论 -
[hadoop2.7.1]I/O之“泥坯块”SequenceFile前序知识
概述 SequenceFile由一系列的二进制key/value组成,如果为key小文件名,value为文件内容,则可以将大批小文件合并成一个大文件。可以看做是一个容器,它将这些小文件组织起来统一存储。 为什么要这么做呢? 首先要了解,在这里小文件是指文件size比HDFS上block size(hadoop中默认为64M)小的文件,可能会小得多。下面从处理性能和存储能力两个方面分别进行解析。原创 2015-11-05 17:21:14 · 2316 阅读 · 0 评论 -
[hadoop2.7.1]I/O之一步一步解析Text(实例)
通过上一篇的讲述,我们知道hadoop中的Text类,跟java中的String类很相似,在其定义的方法上,也多有相近之处,当然,由于用途、UTF编码的不同,两者之间还是有很大的区别。下面要讲实例除了测试Text的方法之外,着重跟java.lang.String进行比较。首先,我们先写生成String串的方法注意:默认的equals方法是直接返回==的结果,所以也是比较数组是否是同一个,等同于使用==比较,是两个数组是否是同一个,而不是是否相等。原创 2015-11-04 16:36:33 · 3268 阅读 · 0 评论 -
[hadoop2.7.1]I/O之一步一步解析Text(基础知识及与String比较)
hadoop中的Text类,跟java中的String类很相似,在其定义的方法上,也多有相近之处,当然,由于用途的不同,两者之间还是有很大的区别的,那么,在分析Text类之前,先来回顾下java.lang.String类。hadoop中的Text类和java中的String类都是使用标准的Unicode,但是在编码方式上却有不同之处,hadoop中的Text类使用UTF-8,而java中的String类使用的是UTF-16。接下来,对于Unicode做一个较为详细的阐述。原创 2015-11-03 15:33:22 · 5175 阅读 · 0 评论 -
[hadoop2.7.1]I/O之IntWritable测试实例(详尽)
用到的工具:hamcrest,junitIDE:MyEclipse 2013 SR1原创 2015-11-01 14:27:37 · 2656 阅读 · 0 评论 -
[hadoop2.7.1]I/O之Writable的实现类及子接口
Hadoop引入org.apache.hadoop.io.Writable接口,是所有可序列化对象必须实现的接口。在hadoop2.71.中,它共有6个子接口。 WritableComparable,顾名思义,它提供类型比较的能力,WritableComparables 能够通过 Comparators进行互相比较。主要是针对MapReduce而设计的,中间有个排序很重要。在 Hadoop Map-Reduce framework中,任何key值类型都要实现这个接口。原创 2015-10-20 14:21:58 · 2361 阅读 · 4 评论 -
[hadoop2.7.1]I/O之Writable源码及相关注解
由于Hadoop的MapReduce和HDFS都有通信的需求,需要对通信的对象进行序列化。Hadoop并没有采用Java的序列化,而是基于java.io里的DataOutput和DataInput引入了它自己的系统,一个简单高效的序列化协议。org.apache.hadoop.io中定义了大量的可序列化对象,他们都实现了Writable接口。原创 2015-10-16 09:31:19 · 1794 阅读 · 0 评论 -
运行hadoop MapReduce程序常见错误及解决方法整理
一、Permission denied1、Win系统下用Eclipse中运行远程hadoop MapReduce程序出现报错org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=xxx, acc原创 2015-02-09 16:29:14 · 18502 阅读 · 1 评论 -
Hadoop2.4.0环境搭建常见问题解答(虚拟机,ubuntu系统)
1、如果系统为64位,无法启动启动hdfs: ./sbin/start-dfs.sh。并有以下错误:sed: -e expression #1, char 6: unknown option to `s'HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known64-Bit: ssh原创 2014-04-20 20:59:45 · 4277 阅读 · 1 评论 -
Hadoop2.2.0版本多节点集群及eclipse开发环境搭建
鉴于部分网友在搭建hadoop2.2.0过程中遇到各种各样的问题,特记录本人搭建集群环境,以作参考。环境:1、虚拟机:VMware® Workstation,版本:10.0.02、操作系统:ubuntu-13.103、hadoop版本:hadoop-2.2.0下载地址4、本文所用两台机器分工如下................原创 2013-12-31 16:33:06 · 13469 阅读 · 55 评论 -
Hadoop集群中的Mahout-distribution-0.7安装与配置
Hadoop集群中的Mahout-distribution-0.7安装与配置系统配置:ubuntu 12.04hadoop-1.1.2jdk1.6.0_45Mahout是Hadoop的一种高级应用。运行Mahout需要提前安装好Hadoop,Mahout只在Hadoop集群的NameNode节点上安装一个即可,其他数据节点上不需要安装。1、下载二进制解压安装。到ht原创 2013-11-27 10:17:32 · 8497 阅读 · 0 评论 -
基于MapReduce的HBase开发(续)
示例代码:import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.HashMap; import org.apache.hadoop.conf.Configuration; import org.apa原创 2013-09-12 13:27:49 · 3412 阅读 · 2 评论 -
基于MapReduce的HBase开发
在伪分布式模式和全分布式模式下 HBase 是架构在 HDFS 上的,因此完全可以将MapReduce 编程框架和 HBase 结合起来使用。也就是说,将 HBase 作为底层“存储结构”,MapReduce 调用 HBase 进行特殊的处理,这样能够充分结合 HBase 分布式大型数据库和MapReduce 并行计算的优点。 相对应MapReduce的hbase实现类: 1)Inp原创 2013-09-10 21:40:04 · 14202 阅读 · 4 评论 -
hbase开发,hbase表操作及其java api实现
开发环境:hadoop: hadoop-1.1.2hbase: hbase-0.94.11-securityeclipse:Juno Service Release 2配置Eclipse 通过 Eclipse 创建一个新 Java 工程,右击项目根目录,选择“Properties> Java Build Path> Library> Add External JAR原创 2013-09-09 16:15:04 · 23535 阅读 · 7 评论 -
hbase:伪分布环境搭建及常见错误解决方法
配置注意事项1、 ssh必须安装ssh , sshd 也必须运行,这样Hadoop的脚本才可以远程操控其他的Hadoop和HBase进程。ssh之间必须都打通,不用密码都可以登录,详细方法可以Google一下 ("ssh passwordless login").2、hostnameHBase使用本地 hostname 才获得IP地址. 正反向的DNS都是可以的.如果你原创 2013-09-09 10:08:21 · 7378 阅读 · 0 评论 -
hbase:单机环境搭建、hbase表操作示例(create, list, put, get, scan, disable, drop...)
选择 Hadoop 版本对HBase部署很关键。下表显示不同HBase支持的Hadoop版本信息。基于HBase版本,应该选择合适的Hadoop版本。本文使用环境java6 (注:和Hadoop一样,HBase需要Oracle版本的Java6.除了那个有问题的u18版本其他的都可以用,最好用最新的。)Hadoop-1.1.2hbase-0.94.11-security.tar.gzUbuntu12.04原创 2013-09-04 10:19:07 · 9524 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十三章 之HBase起步
指南上这一章的开篇即提出:HBase是一个分布式的、面向列的开源数据库。如果需要实时的随机读/写超大规模数据集,HBase无疑是一个好的选择。简介HBase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。 HBase 的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由原创 2013-09-03 12:50:04 · 2366 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十二章 之HiveQL命令大全
HiveQL是一种类似SQL的语言, 它与大部分的SQL语法兼容, 但是并不完全支持SQL标准, 如HiveQL不支持更新操作, 也不支持索引和事务, 它的子查询和join操作也很局限, 这是因其底层依赖于Hadoop云平台这一特性决定的, 但其有些特点是SQL所无法企及的。例如多表查询、支持create table as select和集成MapReduce脚本等, 本节主要介绍Hive的数据类原创 2013-08-26 16:08:11 · 1841 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive分区表、桶
Hive分区表在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。分区表指的是在创建表时指定的partition的分区空间。Hive可以对数据按照某列或者某些列进行分区管理,所谓分区我们可以拿下面的例子进行解释。当前互联网应用每天都要存储大量的日志文件,几G、几十G甚原创 2013-08-26 16:04:43 · 1770 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive架构
Hive 体系结构Hive 的结构如图所示,主要分为以下几个部分:用户接口,包括 CLI,Client,WUI。元数据存储,通常是存储在关系数据库如 mysql, derby 中。解释器、编译器、优化器、执行器。Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算。用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CL原创 2013-08-21 09:40:13 · 1439 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive初步
Hive定义Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reduce原创 2013-08-20 15:26:28 · 1930 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第十一章 之Pig
概述:Pig的安装很简单,注意一下几点:1、设置系统环境变量: export PIG_HOME=.../pig-x.y.zexport PATH=$PATH:$PIG_HOME/bin设置完成后使用pig -help进行验证一下。2、两种mode:local mode:访问本地文件系统,进入shell时使用命令:pig -x localMapReduce mode:pig原创 2013-08-16 16:35:50 · 2642 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第五章 之MRUnit
在指南第三版中直接用MRUnit来做单元测试。MRUnit是由Couldera公司开发的专门针对 Hadoop中编写MapReduce单元测试的框架,基本原理是JUnit4和 EasyMock。MR就是Map和Reduce的缩写。MRUnit框架非常精简,其核心的单元测试依赖于JUnit。而且MRUnit实现了一套 Mock对象来控制OutputCollector的操作,从而可以拦截Outpu原创 2013-08-14 15:57:44 · 1432 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第四章 之MapFile
MapFile即是已经排好序的SequenceFile,已加入用于搜索键的索引。集群上文件:“hdfs://master:9000/mapfile/numbers.map/data” “hdfs://master:9000/mapfile/numbers.map/index”data即数据文件中包含所有需要存储的key-value对,按key的顺序排列。下面给出MapFile的重建索引代码:原创 2013-08-13 16:19:46 · 1641 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第四章 之SequenceFile操作
SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。目前,也有不少人在该文件的基础之上提出了一些HDFS中小文件存储的解决方案,他们的基本思路就是将小文件进行合并成一个大文件,同时对这些小文件的位置信息构建索引。不过,这类解决方案还涉及到Hadoop的另一种文件格式——MapFile文件。SequenceFile文件并不保证原创 2013-08-13 15:02:10 · 1573 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第四章 之hadoop本地库
hadoop本地库原创 2013-08-09 23:41:55 · 2104 阅读 · 1 评论 -
Hadoop: the definitive guide 第三版 拾遗 第四章 之CompressionCodec
一是改写codec示例程序将标准输入流压缩后的文件存放到HDFS上;二是,改写输入:HDFS上存放文件,输出:压缩后的文件存放至HDFS上原创 2013-08-09 08:10:47 · 2346 阅读 · 0 评论 -
Hadoop: the definitive guide 第三版 拾遗 第三章 之查看文件及正则表达式
Hadoop: the definitive guide 第三版 拾遗 第三章 之查看文件及正则表达式原创 2013-08-01 11:46:15 · 1544 阅读 · 0 评论 -
简单验证hadoop的wordcount
1、执行hadoop中的wordcount,得出一结果。2、对于某个指定单词在ubuntu中的文件所在目录下执行:grep 指定单词 所有统计文件|wc原创 2013-07-31 09:21:18 · 1276 阅读 · 0 评论 -
3.3 小结
3.3 小结本章涉及了org.apache.hadoop.io包下最重要的两部分内容:序列化和压缩。序列化广泛应用于分布式数据处理中,是交换数据必备的能力。Hadoop没有使用Java内建的序列化机制,而是引入了紧凑、快速、轻便和可扩展的Writable接口。Writable接口通过write()和readFields()方法声明了序列化和反序列化的功能。在此基础上,分析了Writ转载 2013-07-19 08:33:21 · 1191 阅读 · 0 评论 -
3.2 压缩
3.2 压缩一般来说,计算机处理的数据都存在一些冗余度,同时数据中间,尤其是相邻数据间存在着相关性,所以可以通过一些有别于原始编码的特殊编码方式来保存数据,使数据占用的存储空间比较小,这个过程一般叫压缩。和压缩对应的概念是解压缩,就是将被压缩的数据从特殊编码方式还原为原始数据的过程。压缩广泛应用于海量数据处理中,对数据文件进行压缩,可以有效减少存储文件所需的空间,并加快数据在网络上转载 2013-07-19 08:32:32 · 2132 阅读 · 1 评论 -
第3章 序列化与压缩 3.1序列化
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第3章序列化与压缩,本章涉及了org.apache.hadoop.io包下最重要的两部分内容:序列化和压缩。本节为大家介绍序列化。第3章 序列化与压缩传统的计算机系统通过I/O操作与外界进行交流,Hadoop的I/O由传统的I/O系统发展而来,但又有些不同,Hadoop需要处理P、T级别的数转载 2013-07-19 08:28:06 · 2441 阅读 · 1 评论 -
2.4 小结
2.4 小结配置系统是复杂软件必不可少的一部分,作为Hadoop Common部分介绍的第一个组件,org.apache.hadoop.conf.Configuration在Hadoop各个子项目中发挥着重要的作用。本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–值对构成的、结构相对简单的XML配置文件,以及相应的处理类Configur转载 2013-07-18 11:21:30 · 1536 阅读 · 2 评论 -
2.3 Configurable接口
2.3 Configurable接口Configurable是一个很简单的接口,也位于org.apache.hadoop.conf包中,其类图如图2-3所示。从字面理解,Configurable的含义是可配置的,如果一个类实现了Configurable接口,意味着这个类是可配置的。也就是说,可以通过为这个类的对象传入一个Configuration实例,提供对象工作需转载 2013-07-18 11:20:23 · 2037 阅读 · 1 评论 -
2.2 Hadoop Configuration详解
2.2 Hadoop Configuration详解Hadoop没有使用java.util.Properties管理配置文件,也没有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的API,即使用org.apache.hadoop.conf.Configuration处理配置信息。2.2.1转载 2013-07-18 11:19:35 · 29917 阅读 · 5 评论 -
第二部分 Common的实现 第2章 Hadoop配置信息处理 2.1 配置文件简介
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》第2章Hadoop配置信息处理,本章从Windows和基于Java Properties配置文件开始,分析了Hadoop使用的基于健–值对构成的、结构相对简单的XML配置文件,以及相应的处理类Configuration,特别是Configuration类中的资源加载、资源合并和属性扩展等比较重要的处理过程。转载 2013-07-18 11:17:08 · 2006 阅读 · 1 评论 -
1.4 小结
1.4 小结大数据以及相关的概念、技术是业界和学界最近关注的热点内容,Hadoop在其中扮演了十分重要的角色。本节首先对Hadoop进行了简单的介绍,展示了蓬勃发展的Hadoop生态系统和Hadoop的简单历史。并在此基础上,向读者介绍了阅读分析Hadoop所必需的开发环境的搭建过程,包括:安装与配置JDK、安装与配置Eclipse、安装与配置辅助工具的工作。最后,在上述环境中,从零开始建转载 2013-07-18 11:14:23 · 1872 阅读 · 3 评论