大数据概念基本介绍
Hadoop介绍
Hadoop是一个基于java开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop包括一系列的类shell的命令,可直接操作HDFS以及其他Hadoop支持的文件系统 (官方链接:https://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html)
下图为Hadoop生态圈的一些组件
Hadoop的核心是MapReduce,YARN和HDFS。
(1)HDFS分布式文件存储:
随着数据量的不断增大,文件的大小取决于单机存储的上限,这显然满足不了我们的需求。HDFS将大文件切块,部署到不同的机器节点上,完成分布式存储。
注:名称节点NameNode: 主节点(Master);数据节点DataNode: 从节点(Slave)
(2)YARN资源调度和管理:
YARN可以实现HADOOP集群的资源共享,不仅仅可以跑MapRedcue,还可以跑Spark、Flink。YARN支持主从架构,主节点最多可以有2个,从节点可以有多个。其中:ResourceManager:是主节点,主要负责集群资源的分配和管理,NodeManager:是从节点,主要负责当前机器资源管理
(3)MapReduce分布式计算:
解决海量数据的计算问题。MapReduce是分布式运行的,由两个阶段组成:Map和Reduce,Map阶段和Reduce阶段都是一个独立的程序,有很多个节点同时运行,每个节点处理一部分数据。每个阶段的输入输出都是key-value的形式,key和value的类型可以自行指定。map阶段对切分好的数据进行并行处理,处理结果传输给reduce,由reduce函数完成最后的汇总。
(4)Hbase介绍
基于分布式文件系统上面建立的数据库,HBase是面向列的开源数据库。
rowkey:Rowkey的概念和mysql中的主键相似,Hbase使用Rowkey来唯一的区分某一行的数据,基于字典序排序;
region:和MySQL的分区或者分片差不多,Hbase会将一个大表的数据基于Rowkey的不同范围分配到不通的Region中,每个Region负责一定范围的数据访问和存储;
timestamp:timestamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键,在写入数据的时候,如果用户没有指定对应的timestamp,Hbase会自动添加一个timestamp,timestamp和服务器时间保持一致。相同rowkey的数据按照timestamp倒序排列,默认查询的是最新的版本,可以指定timestamp的值来读取旧版本的数据。
(5)Hive介绍
hive是基于hadoop的数据仓库,那么数据仓库可以简单理解为是一个只对数据进行查询和管理的软件,所以说Hive是一种建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析和管理;
1.Hive 的存储结构包括数据库、表、视图、分区和表数据等。数据库,表,分区等等都对应 HDFS 上的一个目录。表数据对应 HDFS 对应目录下的文件。
2.Hive 中所有的数据都存储在 HDFS 中,没有专门的数据存储格式,因为 Hive 是读模式(Schema On Read),可支持 TextFile,SequenceFile,RCFile 或者自定义格式
3.在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据
4.内表外表:内表删除时会删除真实数据,外表删除时不会删除真实数据。原因:内表真实数据存在于hive默认创建的路径下,此数据只有hive会用到,直接删除不影响其他模块使用(比如spark)。但是外表就不同,不单单只有hive使用,如果随意删除会影响其他模块使用
5.分区分桶:在逻辑上,分区表与未分区表没有区别,在物理上分区表会将数据按照分区间的列值存储在表目录的子目录中。分桶则是指定分桶表的某一列,让该列数据按照哈希取模的方式随机、均匀的分发到各个桶文件中。