课程安排2015/05课程回顾HADOOP生态圈以YARN为核心的生态系统HDFS架构HDFS架构采用主从结构HDFS常用命令注意,hadoop没有当前目录的概念,也没有cd命令显示文件列表:sudo-uhdfshdfsdfs-lsHDFS路径创建文件夹:hdfsdfs-mkdirHDFS路径上传文件:sudo-uhdfshdfsdfs-put本地文件HDFS目录复制文件到本地:sudo-uhdfshdfsdfs-getHDFS文件本地目录删除文件或目录:sudo-uhdfshdfsdfs–rm–rHDFS文件查看文件内容:sudo-uhdfshdfsdfs–catHDFS文件修改文件夹权限:sudo–uhdfshdfsdfs–chmod777HDFS文件或目录MapReduce的总体架构Shuffle过程图Hive是什么?•Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。•本质是将HQL转换为MapReduce程序Hive关注以下几点:在Hadoop中的数据可扩展的SQL处理可扩展到100PB+结构化和非结构化数据Hive的架构简介HiveVSSQLHQLSQL数据存储HDFS/HBaseRawDevice/localFS数据格式用户自定义系统决定数据更新不支持(会把之前的数据覆盖)支持索引有(0.8版之后增加)有执行MapReduceExecutor执行延迟高低可扩展性高(UDF,UDAF,UDTF)低数据规模大(数据大于TB)小数据检查读时模式写时模式HBase简介HBase是一个分布式的、多版本的、面向列的开源数据库利用HadoopHDFS作为其底层存储系统,提供高可靠性、高吞吐、列存储、可伸缩、实时读写的数据库系统。利用HadoopMapReduce来处理HBase中的海量数据利用Zookeeper作为协同服务。HBase与RDBMS对比HBaseRDBMS数据类型只有字符串丰富的数据类型数据操作简单的增删改查各种各样的函数,表连接存储模式基于列存储基于表格结构和行存储数据保护更新后旧版本仍然会保留替换可伸缩性轻易的进行增加节点,可扩展性高需要中间层HBase与HDFS对比两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;HDFS适合批处理场景不支持数据随机查找不适合增量数据处理不支持数据更新HBase数据表中一些关键概念Rowkey键ColumnFamily列族Cellqualifier列族修饰符(列)Cell单元格Timestamp时间戳Region区域HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValueMultipleVersionsHBase数据模型Hbase数据模型展示DDL语句创建表,如:create'PERSON_ARCH','BASE_INFO‘创建带命名空间的表,如:create'HBASE_TEST:PERSON_ARCH','BASE_INFO‘显示表详细信息,如:describe'PERSON_ARCH‘禁用表,如:disable'PERSON_ARCH’启用表,如:enable'PERSON_ARCH’DML语句增加/修改数据,如:put'PERSON_ARCH','00000001','BASE_INFO:NAME','jerry‘取得整行数据,如:get'PERSON_ARCH','00000001'取得行的某列数据get'PERSON_ARCH','00000001','BASE_INFO:age'DQL语句全表扫描,如:scan'PERSON_ARCH'得到前N条数据,如:scan'PERSON_ARCH‘,LIMIT=3指定输出字段,如:scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=3}指定起始行键扫描如:scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=10,STARTROW='00000001',STOPROW='00000004'}HBase体系结构Region定位21.META.表的一行在内存中大约占用1KB。并且每个region限制为128MB。那么此三层结构可以保存的region数目为:(128MB/1KB)*(128MB/1KB)==2(34)个region物理存储22HBase体系结构Hbase高级特性过滤器计数器协处理器Hbase过滤器Rowkey前缀过滤器scan'PERSON_ARCH',{COLUMNS=['BASE_INFO:NAME'],LIMIT=10,FILTER=(PrefixFilter('10000')}RowKey模糊查询过滤器scan'PERSON_ARCH',{COLUMNS='BASE_INFO:NAME',LIMIT=10,FILTER=RowFilter.new(CompareFilter::CompareOp.valueOf('EQUAL'),SubstringComparator.new('000'))}按字段值查询过滤器SingleColumnValueFilter.new(Bytes.toBytes('BASE_INFO'),Bytes.toBytes('NAME'),CompareFilter::CompareOp.valueOf('EQUAL'),BinaryComparator.new(Bytes.toBytes('赵大')))}2014年4月ApachePhoenix介绍Hadoop学习总结Contents什么是Phoenix?PhoenixPushDownSharedTables什么是ApachePhoenix?什么是ApachePhoenix?1.将Hbase转换成支持Sql的数据库o查询引擎o元数据仓库o嵌入式JDBC驱动o只针对Hbase数据什么是ApachePhoenix?2.快速访问Hbase数据oHBase-specificpushdowno元数据仓库o本地编译查询(而非MR)o并非执行scansSELECT*FROMtWHEREkIN(?,?,?)PhoenixStinger(Hive0.13)0.04sec280sec7,000xfaster*1亿数据量table什么是ApachePhoenix?3.轻量级o无需额外服务器o绑定HDP2.1o100%使用JAVA语言Hbase集群架构图Hbase集群架构图PhoenixHbase集群架构图PhoenixPhoenix什么是ApachePhoenix?4.良好的集成o映射已存在的Hbase表o集成ApachePIGo集成ApacheFlumeo集成ApacheSqoop(wip)什么是ApachePhoenix?4.良好的集成o映射已存在的Hbase表o集成ApachePIGo集成ApacheFlumeo集成ApacheSqoop(wip)什么是ApachePhoenix?1.将Hbase转换成Sql数据库2.快速访问Hbase数据3.轻量级4.良好的集成性为什么ApachePhoenix这么快?1.HBaseo快速,但Nosql2.数据模型o支持复合主键o多数据类型支持3.并行客户端4.Pushdown自定义过滤器和协处理器Phoenix数据模型HBaseTablePhoenix通过关系词映射Hbase数据模型Phoenix数据模型HBaseTableColumnFamilyAColumnFamilyBPhoenix通过关系词映射Hbase数据模型Phoenix数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValuePhoenix数据模型Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValuePhoenix数据模型Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValuePhoenix数据模型Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValuePhoenix数据模型Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValuePhoenix数据模型Phoenix通过关系词映射Hbase数据模型HBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1ValueRowKey2ValueValueRowKey3ValueHBaseTableColumnFamilyAColumnFamilyBQualifier1Qualifier2Qualifier3RowKey1KeyValueRowKey2KeyValueKeyValueRowKey3KeyValueMult