2.1.1Hadoop简介
1.Hadoop是Apache软件基金会旗下一个分布式计算平台 基于Java
2.Hadoop的核心是分布式文件系统 HDFS 和 MapReduce
3.HDFS是对谷歌GFS的开源实现 具有较高的读写速度,容错性,可伸缩性
4.HDFS是冗余数据存储方式
5.MapReduce是针对谷歌MapReduce的开源实现 并行开发应用程序
2.1.2Hadoop的发展历史
1.Hadoop最初是由ApacheLucene项目的创始人Doug Cutting开发的文本搜索库
2.Hadoop源自于2002年Apache Nutch项目—一个开源的网络搜索引擎也是Lucene项目的一部分 Nutch模仿谷歌的GFS开发了NDFS 也是HDFS的前身
2.1.3Hadoop的特性
1.高可靠性
2.高效性
3.高可扩展性
4.高容错性
5.成本低
6.运行在Linux
7.支持多编程语言
2.1.4Hadoop应用现状
1.2007年雅虎在Sunnyvale总部建立M45—一个包含4000处理器的1.5PB级的Hadoop集群
2.华为对Hadoop的贡献很大
2.2Hadoop的项目结构
2.2.1-----Common
1.Hadoop Common原名Hadoop Core 从Hadoop0.2更名为Common 在Hadoop2.2以及之前版本 Common 包含HDFS MapReduce和其他公共的项目内容
2.从Hadoop0.2开始HDFS和Mapreduce被分离出来作为单独子项目,其余部分构成Common
3.Common是为了Hadoop其他子项目提供支持的常用的工具 提供基本服务
主要包括:文件系统,RPC和串行化库
2.2.2-----Avro
1.Avro是Hadoop一个子项目,也是Apache中的一个独立项目
2.Avro是一个用于数据序列化的系统,提供丰富的数据结构类型,快速可压缩的二进制数据格式,存储持久性数据的文件集,远程调用RPC的功能和简单的动态语言集成功能
3.和Thrift类似,Avro支持跨编程语言实现
4.Avro有自己显著的特点:他依赖于模式(Schema),数据的读写实在模式下完成的,需要动态的加载相关数据的模式,正是使用了模式,写入数据的开销大大减少,序列化速度大大提升,方便了动态脚本语言的使用,在把Avro数据保存到文件中时,数据连通模式一起被存储,这样,不同类型的程序都可以对文件进行处理,Avro和动态语言结合后,读写数据文件和使用RPC协议都不用生成代码,代码生成可作为一种可选的优化,只需要在静态类型语言中实现
2.2.3-----HDFS
1.把硬件故障作为一种常态,
2.HDFS放宽了一部分POSIX约束,实现了以流的方式访问文件系统中的数据
3.HDFS在访问应用程序数据时,可以拥有很高的吞吐率
2.2.4-----Hbase
1.Hbase是一个提供高可靠性,高性能,可伸缩,实时读写,分布式的列式数据库,一般使用HDFS作为底层存储
2.Hbase是针对谷歌的BigTable的开源实现,二者采用相同的数据模型,具有强大的非结构化数据存储的能力
3.Hbase与传统数据库的一个重要区别:hbase基于列存储,其他基于行存储
4.Hbase拥有良好的横向扩展能力,可以通过不断增加廉价服务器来增加存储能力
2.2.5-----MapReduce
1.Hadoop MapReduce是针对谷歌MapReduce的开源实现,是一种编程模式,用于大规模数据集(大于1TB)的并行计算
2.2.6-----Zookeeper
1.Zookeeper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布锁之类的基本服务,用于构建分布应用,使用java编写,使用了一个文件树结构相似的数据模型
2.2.7------Hive
1.Hive是一个基于Hadoop的数据仓库工具,可以用Hadoop文件中的数据集进行数据整理,分析,存储,提供类似SQL语言的查询语言HiveQL
2.2.8-----Pig
1.Pig是一种数据流语言和运行环境,适合使用Hadoop和mapreduce平台来查询大型半结构化数据集
2.简化了Hadoop的工作任务,在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop提供了一种近似SQL语言的接口
3.Pig是一个相对简单的语言,当我们需要从大型数据集中搜索满足某个特定条件的数据集时,pig比MapReduce好,只需要编写一个脚本在集群中自动并行处理与并发
2.2.9------Sqoop
1.主要用来在Hadoop和关系数据库之间交换数据
2.Sqoop主要通过JDBC进行交互
3.Sqoop是专门为大数据集设计的,支持增量更新,可以将新纪录添加到最近一次导出的数据源上,或者指定上次修改的时间戳
2.2.10-----Chukwa
1.Chuwa是一个开源,用于监控大型分布式系统的数据收集系统,可以将各类数据类型收集成适合Hadoop处理的文件,并保存在HDFS中进行各种MapReduce操作
2.Chuwa构建在HDFS和MapReduce框架之上,是一个强大灵活的数据集,用于展示,监控和分析已经收集的数据