hadoop入门--子项目

   hadoop发展至今已经是一个庞大的家族,该家族有数十个生命力强盛的子项目,hadoop和这些子项目都在不停的发展中.

Hbase

   Hbase是一个非关系型的数据库,列式数据库,链式存储,查询语言可称为HQL查询语言,Hbase Query Lanaguage.
   是Google Bigtable的开源实现,big table是无所不包的大表,所有的表,都能靠3列显示出来,行健+字段名+value值.如(学生的学号,姓名,年龄和系别),用bigtable建出来就是(学号,姓名,李三; 学号,年龄,19; 学号,系别,信息;),学号是行键,唯一标识学生用的.
   可集群化, mysql的集群,是高可用集群,文件有很多份,写这份的时候,别人还可以读其他的,所以读写分离,负载均衡,但不是真正的分布式集群.oracle的集群,也不是真正的分布式集群,rac是共享的.
    可使用shell,web,api等多种方式访问
   适合高度写(insert)的场景,以及有成熟的数据分析主题,查询模式已经确定并且不会轻易改变;还有传统的关系型数据库已经无法负荷,适合高速插入,大量读取, 非常适合海量的,但同时也是简单的操作

Cassandra

   也是NoSQL,分布式key-value型数据库,  与Hbase类似,借鉴googel bigtable.它的设计思想是,无中心的,完全分布的,没有主控节点但是因为无中心,所以效率低.只有顺序写,没有随机写的设计,满足高负荷情形的性能需求

Pig

   是一种轻量级的语言.
   因为hadoop报错很多,以及操作繁琐;使用并不便利,所以推出pig等一些子项目,简化hadoop的操作.
   Pig可以看做是Hadoop的客户端软件,连接到Hadoop集群进行数据分析工作.
   方便不熟悉java的用户,使用一种较为简单的类似sql的面向数据流的语言pig latin,进行数据处理
   pig latin语言是面向数据分析处理的轻量级脚本语言,可以排序、过滤、求和、分组和关联、自定义函数(UDF)。
   pig可以看做是pig latin到map-reduce的映射器。

Hive

   Sql到reduce的解析,是一个映射器,将sql转为map-reduce的代码,支持sql92标准中的大部分.
   问题和期待解决方案,数据分析者面对的问题,数据日趋庞大,入库困难,用户的应用和分析结果呈整合趋势,对实时性和响应时间要求越来越高,使用的模型越来越复杂,计算量指数级上升.而他们期待的解决方案,  完美解决性能瓶颈,在可见未来不容易出现新的瓶颈,  过去所拥有的技能可以平稳过渡,比如SQL,R,因为转移平台的成本需要考虑平台软硬件成本,再开发成本,技能再培养成本,维护成本.

MapReduce

   MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
   概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
   性能调优, 需要多少reducer,空值reducer的格式;输入:大文件优于小文件,hadoop擅长处理大文件,不擅长处理一堆的小文件.所以可以将一堆小文件合并成一个大文件来处理.减少网络传输:压缩map的输出,这样在网络中传输的就少了. 优化每个节点能运行的任务数
   开发场景, 数据去重,排序,自连接,多表连接, 基于内容的推荐系统,聚类,基于协同过滤的推荐系统.

HDFS

   分布式存储机制,可线性增长的海量存储能力,自动数据冗余,无需使用raid,无需另行备份,会自动备份,hdfs存储的数据可以为进一步分析计算提供数据基础.
hdfs的基础和目标
    1.硬件错误是常态,需要冗余
    2.流式数据访问.数据批量读取而非随机读写
    3.大规模数据集
    4.简单一致性模型,采用一次性写多次读,写了就不修改
    5.采用"数据就近"原则分配节点执行

ZooKeeper

   动物园管理员,  协调服务器节点,进程中的通信.
   凡是分布式系统,遇到类似的问题,协调分布式系统的各个服务, 判断节点是否死掉,死掉怎么办,处理负载均衡的问题,实现分布式事务,分布式的锁机制,需要通信的协调机制,这个时候用zookeeper就行了.
   它是Google Chubby的开源实现,用于协调分布式系统上的各种服务.列入确认消息是否准备到达,防止单点失效,处理负载均衡.它的核心一个精简的文件系统.
   应用场景,在Hbase,实现NameNode自动切换
   工作原理:领导者,跟随者以及选举过程

Avro

   数据序列化工具,用于支持大批量数据交换应用,支持二进制序列化方式,可便捷,快速地处理大量数据,动态语言友好,Avro提供的机制使动态语言可以方便的处理Avro数据,提供Thrift接口. 

Sqoop

   用于在Hadoop和关系型数据库之间,交换数据,通过jdbc接口连入关系型数据库,交换数据(关系型数据到hive/hdfs/hbase),它是SQL-to-HDFS工具,利用jdbc连接关系型数据库

Mahout

   起源,2008成为lucene的子项目,lucene需要解决文本数据分析和挖掘(文本重复判断,文本自动分类)的问题, 所以一部分开发人员研究机器学习算法而那些计算学习算法就成了最初的Mahout,后来吸收Taste(开源系统过滤算法),2010成为apache的顶级项目.
   主要功能 提供程序库,提供机器学习中的算法,实现可伸缩的机器学习算法(即算法的M-R化),可以 帮助开发人员, 快速建立具有机器智能的应用程序, 即帮助开发人员,如何快速将一个传统的算法,变成map-reduce的算法
   Mahout建立的机器智能的应用程序,包括1.频繁模式挖掘,5.频繁子项挖掘, 2.聚类算法, 3.分类器,  4.推荐系统.      

Flume和Chukwa都是ETL,都可以做数据收集,数据处理.

   ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

Chukwa

   Chukwa是数据集成工具.
   架构在hadoop之上的,数据采集与分析框架,主要进行日志采集和分析,通过安装在收集节点的"代理"采集最原始的日志数据, "代理"将数据发给收集器,收集器定时将数据写入Hadoop集群,并指定定时启动的Map-Reduce作业对数据进行加工处理和分析, Hadoop基础管理中心(HICC)最终展示数据
   它的架构图
      agent,从data层采集数据,每台机子上一个, 
      collector,每100个agent,一个收集
      hdfs,先5分钟Data sink(接收)一次,然后可以进行map-reduce jobs,对数据进行处理,放到structured storage中,

Flume

   Flume是Cloudera提供的分布式,可靠和高可用的海量日志采集,聚合和传输系统, 提供从console,rpc,text,tail,syslog,exec等数据源上收集数据的能力.
   它的体系架构, 
      agent 代理层,采集数据,采集分为两种,push sources:外部系统主动推送,polling sources:flume到外部系统中获取
      collector,收集层,对数据进行聚合
      hdfs存储层,对数据进行存储.

Flume和Chukwa的区别

   Flume在agent比较强,提供多种多样的收集;
   Chukwa在后端比较强,可以对数据进行map处理再存储,而且有图形化界面,可以监控etl的过程.

以上就是hadoop的一些子项目的介绍.由于我也没有用过,所以这些都是大体的介绍.

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值