A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 372767784 初级黑马   /  2019-7-22 19:08  /  946 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

hadoop

  hadoop1分为hdfs和mapred,hadoop2分为hdfs,mapreduce和yarn。我主要学习了hadoop1

hadoop要求jdk,因此要先安装jdk,hadoop安装主要配置文件为core-site.xml hdfs-site.xml mapred-site.xml 和hadoop-env.sh

主要学习途径是stackoverflow,jira。hadoop权威指南

hadoop的核心架构 HDFS是按照Master和Slave的结构。由namenode和datanode构成,namenode通过datanode的heartbeat(“心跳”)确定节点正常。namenode管理datanode的block信息。同时管理client对集群的访问。还有一个secondnamenode实现namenode的冷备份,根据snapshot(“快照”)和checkpoint(“监测点”)实现和namenode的一致性,在namenode节点dead时secondnamenode替代namenode的工作。datanode保存hadoop的数据,datanode的基本数据单元是block,每个block大小为64M。因此可知hadoop是用来存储大文件的。小文件的读写会很消耗hadoop内存。

热备份:b是a的热备份,如果a坏掉。那么b马上运行代替a的工作。

冷备份:b是a的冷备份,如果a坏掉。那么b不能马上代替a工作。但是b上存储a的一些信息,减少a坏掉之后的损失。

mapreduce 一种云计算的核心计算模式,一种分布式运算技术,也是简化的分布式编程模式,它主要用于解决问题的程序开发模型,也是开发人员拆解问题的方法。

原理是  map : <k1,v1> -> list<k2,v2> ; reduce : <k2,list(v2)> -> <k3,v3>     mapreduce主要强调了map和reduce中间还存在shuffle("洗牌")和sort的过程,通过洗牌主要将相同主键的数据移动到一个datanode处理,充分考虑分布式模式,在单一datanode内数据是有序排列的,在通过reduce可以求得最大值,平均值,个数等。

3.hbase

hbase是列族数据库底层依赖于hdfs。hbase是按照Master和Slave的结构。分为HMaster和regionserver。hbase中hmaster主要管理-ROOT-和.META.表的数据。-ROOT-只有一个是不可分割的。存储了.META.的索引信息,而.META.存储了regionserver中region的索引信息。所以是采用了三级索引思想。regionserver中是存储数据的地方,而regionserver中有可以有多个region和一个Hlog。每个region里面又分为多个store,store存储的列族数据。store中有memstore和storefile。memstore达到阀值时,将数据刷写成storefile中。Hregion是以完整的记录行存储。hbase内部中行键是有序的。client只能根据行键key读取数据。hbase中内部数据是<key,value>存储。

hbase中最小单元是hfile,HFile中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile

hbase中还内置有zookeeper(你也可以不使用内置的zookeeper),Zookeeper Quorum存储-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况
Zookeeper避免HMaster单点问题
client访问过程 : client -> zookeeper -> -ROOT- > .META.-> 用户数据表

4.hive

hive是数据仓库,hive底层依赖于hadoop,它的sql解析是通过mapreduce任务完成的。hive的两个核心服务是metastore和hiveserver。

数据访问和存储是采用sql方式访问的。hiveQL是hive的核心。它不支持update和delete

  (1)HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的 
    (2)所有的数据都是存储在Hadoop中 
    (3)查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table)
    (4)Hadoop和Hive都是用UTF-8编码的

hiveQL中select的使用,与sql的区别和hive的性能优化都是重点去理解的。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马