研磨Hadoop
Hadoop知识学习
zuodaoyong
这个作者很懒,什么都没留下…
展开
-
Hadoop参数调优(一)
1、dfs.namenode.handler.count=20*log2(clusterSize)比如集群为8台,参数设置为60Namenode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。dfs.namenode.handler.count默认值为10配置文件:hdfs-site.xml2、yarn.nodemanager.resourc...翻译 2020-04-19 18:56:17 · 573 阅读 · 0 评论 -
Hdfs存错多目录配置
1、在hdfs-site.xml文件配置多目录添加如下配置<property><name>dfs.datanode.data.dir</name><value>file:///hd1/dfs/data1,file:///hd2/dfs/data2,file:///hd3/dfs/data3</value></prope...翻译 2020-04-19 13:24:28 · 219 阅读 · 0 评论 -
Hive之MR优化
1、合理设置Map数(1)通常情况下,作业会通过 input 的目录产生一个或者多个 map 任务主要的决定因素有: 1)input 的文件总个数 2)input 的文件大小 3)集群设置的文件块大小(2)是不是 map 数越多越好?答案是否定的。如果一个任务有很多小文件(远远小于块大小 128m),则每个小文件也会被当做一个块,用一个 map 任...翻译 2020-02-10 22:21:45 · 1349 阅读 · 0 评论 -
Hive之动态分区
关系型数据库中,对分区表 Insert 数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive 中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用 Hive 的动态分区,需要进行相应的配置。1、开启动态分区参数设置(1)开启动态分区功能(默认 true,开启)hive.exec.dynamic.partition=true...翻译 2020-02-09 20:29:37 · 988 阅读 · 0 评论 -
Hive之表优化
一、小表、大表 Join将 key 相对分散,并且数据量小的表放在 join 的左边,这样可以有效减少内存溢出错误发生的几率;再进一步,可以使用 map join 让小的维度表(1000 条以下的记录条数)先进内存。在 map 端完成 reduce。新版的 hive 已经对小表 JOIN 大表和大表 JOIN 小表进行了优化。小表放在左边和右边已经没有明显区别。例:1、创建大...翻译 2020-02-09 19:28:10 · 1803 阅读 · 0 评论 -
Hive之Fetch和本地模式
1、Fetch 抓取Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM employees;在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文件,然后输出查询结果到控制台。在 hive-default.xml.template 文件中 hive.fetch.task.conver...翻译 2020-02-09 15:22:21 · 726 阅读 · 0 评论 -
Hive之数据压缩和存储格式
关于Hadoop的压缩参看之前写的博客:https://blog.csdn.net/zuodaoyong/article/details/104115608本文主要关注Hive的压缩数据相关内容通过命令查看集群支持哪些压缩编码格式:[root@master native]# hadoop checknative20/02/04 17:46:36 INFO bzip2.Bzip2Fac...翻译 2020-02-04 20:33:28 · 550 阅读 · 0 评论 -
Hive之自定义函数
1、系统内置函数(1)查看系统自带的函数show functions;(2)显示自带的函数的用法desc function upper;(3)详细显示自带的函数的用法desc function extended upper;2、自定义函数引入maven依赖<dependency> <groupId>org.apach...翻译 2020-02-04 13:20:57 · 1605 阅读 · 0 评论 -
Hive之窗口函数
1、OVER()指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化例:数据源order.txt:jack,2017-01-01,10tony,2017-01-02,15jack,2017-02-03,23tony,2017-01-04,29jack,2017-01-05,46jack,2017-04-06,42tony,2017-01-07,50jac...翻译 2020-02-03 13:47:29 · 188 阅读 · 0 评论 -
Hive之常用函数解析
一、空字段赋值1、NVL(给值为 NULL 的数据赋值)格式是 NVL( string1, replace_with)。它的功能是如果string1 为 NULL,则 NVL 函数返回 replace_with 的值,否则返回 string1 的值,如果两个参数都为 NULL ,则返回 NULL。举例:如果员工的 comm 为 NULL,则用-1 代替select nvl(c...翻译 2020-02-02 15:12:18 · 855 阅读 · 0 评论 -
Hive之分桶表解析
分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区。分桶是将数据集分解成更容易管理的若干部分的另一个技术。1、创建分桶表create table stu_buck(id int,name string)clustered by(id) into 4 bucketsrow form...翻译 2020-02-02 11:52:34 · 681 阅读 · 0 评论 -
Hive查询特别知识点解析
1、Like 和 RLike(1)使用 LIKE 运算选择类似的值(2)选择条件可以包含字符或数字:% 代表零个或多个字符(任意个字符)。_ 代表一个字符。(3)RLIKE 子句是 Hive 中这个功能的一个扩展,其可以通过 Java 的正则表达式这个更强大的语言来指定匹配条件。2、Hive 支持通常的 SQL JOIN 语句,但是只支持等值连接,不支持非等值连接。...翻译 2020-02-01 17:32:44 · 252 阅读 · 0 评论 -
Hive数据导入和导出
一、数据导入1、向表中装载数据(Load)hive> load data [local] inpath '/opt/module/datas/student.txt' [overwrite] into table student[partition (partcol1=val1,…)];(1)load data:表示加载数据(2)local:表示从本地加载数据到 hiv...原创 2020-02-01 16:01:33 · 562 阅读 · 0 评论 -
Hive元数据信息对应MySQL数据库表
一、VERSION(存储Hive版本的元数据表)如果该表出现问题,根本进入不了Hive-Cli。比如该表不存在,当启动Hive-Cli时候,就会报错”Table ‘hive.version’ doesn’t exist”二、Hive数据库相关的元数据表(DBS、DATABASE_PARAMS)1、DBS(存储Hive中所有数据库的基本信息)2、DATABASE_PAR...翻译 2020-02-01 13:46:50 · 545 阅读 · 0 评论 -
Hadoop之高可用HA
Hadoop的HA主要是HDFS的HA和YARN的HA1、HDFS高可用HA(双NameNode消除单点故障)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过HA方式将NameNode很快的切换到另外一台机器(1)HDFS的HA注意点 1)元数据管理方式需要改变 ...翻译 2020-01-31 11:38:10 · 721 阅读 · 0 评论 -
Hadoop之MapReduce作业优化
1、MapReduce跑的慢的原因(1)计算机性能(2)数据倾斜(3)map和reduce数设置不合理(4)小文件过多(5)大量的不可切割的超大文件(6)spill次数过多(7)merge次数过多2、MapReduce优化(1)数据输入优化 1)合并小文件 大量小文件会产生大量Map任务,增大了map任务的装载次数,任务的...翻译 2020-01-30 19:43:06 · 576 阅读 · 0 评论 -
Hadoop之Yarn资源调度器
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。1、Yarn架构2、yarn的工作机制(1)MR程序提交到客户端所在的节点。(...翻译 2020-01-30 18:57:11 · 365 阅读 · 0 评论 -
Hadoop之数据压缩
1、压缩作用(1)能有效减少底层存储(HDFS)读写字节数。(2)提高网络带宽和磁盘空间的效率在运行MR程序时,IO操作,网络数据传输,Shuffle和Merge要花费大量的时间,当数据量很大和工作负载密集时,使用数据压缩显得尤为重要。2、压缩的策略和原则压缩是提高Hadoop运行效率的优化策略通过对Mapper、Reducer运行过程的数据进行压缩,减少磁盘IO,提高MR...翻译 2020-01-30 16:54:17 · 275 阅读 · 0 评论 -
Hadoop之MapReduce的计数器
代码存于github:https://github.com/zuodaoyong/HadoopHadoop作业在运行时维护了若干个内置计数器,方便用户监控已处理数据量和已产生的输出数据量1、采用枚举的方式统计计数Counter getCounter(Enum<?> var1);enum CustomCounter{ normal,abnormal}co...原创 2020-01-30 15:30:29 · 334 阅读 · 0 评论 -
Hadoop之MapReduce的Join解析
代码存于github:https://github.com/zuodaoyong/Hadoop1、Reduce Join(会出现数据倾斜)通过将关联条件作为Map输出的key,将两表满足Join条件的数据并携带数据所来源的文件信息,发往同一个ReduceTask,在Reduce中进行数据的串联需求:将商品信息表中数据根据商品pid合并到订单数据表中订单数据: Id ...原创 2020-01-30 14:23:16 · 859 阅读 · 0 评论 -
Hadoop之MapReduce的OutputFormat解析
github:https://github.com/zuodaoyong/HadoopOutputFormat是MapReduce输出的基类,所有实现MapReduce输出都实现了OutputFormat接口。OutputFormat常用的实现类TextOutputFormat和SequenceFileOutputFormat1、TextOutputFormat(文本输出)默认的输...原创 2020-01-30 11:54:45 · 352 阅读 · 0 评论 -
Hadoop之MapReduce的Combiner解析
Combiner是MapReduce程序中Mapper和Reducer之外的一种组件,其父类是Reducer。Combiner和Reducer的区别在于运行的位置(1)Combiner是在每一个MapTask所在的节点运行(2)Reducer是接受全局所有的Mapper端的输出结果注意:(1)Combiner对每一个MapTask的输出进行局部汇总,减少网络传输量(2)Co...翻译 2020-01-29 19:42:01 · 429 阅读 · 0 评论 -
Hadoop之MapReduce的排序解析
代码存于github:https://github.com/zuodaoyong/HadoopMapTask和ReduceTask均会对数据按照key进行排序,Hadoop的默认排序是按照字典顺序排序,实现排序的方法是快速排序。1、MapTask排序将处理的结果暂时放到环形缓冲区中,当环形缓冲区使用率达到一定的阈值后,再对缓冲区中的数据进行一次快速排序,并将这些有序数据溢写到磁盘,而当...原创 2020-01-29 16:23:13 · 935 阅读 · 0 评论 -
Hadoop之MapReduce的Partition分区
数据处理后,如果想将处理的结果按照条件输出到不同的文件中(不同的文件的数据即是分区数据)1、HashPartitioner(Hadoop自带的默认分区)默认分区是根据key的HashCode对ReduceTasks个数取模得到的,用户无法控制具体的key存储到哪个分区HashPartitioner源码如下:public class HashPartitioner<K, V&...原创 2020-01-29 10:58:33 · 880 阅读 · 0 评论 -
Hadoop的MapReduce工作机制解析
1、MapTask工作机制(1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用Out...翻译 2020-01-29 09:43:42 · 299 阅读 · 0 评论 -
Hadoop的FileInputFormat解析
代码存于github:https://github.com/zuodaoyong/Hadoop在运行MapReduce程序时,输入的文件格式有:日志文件,二进制文件,数据库表等,那么针对不同的数据类型,MapReduce提供了相应的读取数据接口实现类TextInputFormat,KeyValueTextInputFormat,NLineInputFormat,CombineTextIn...翻译 2020-01-28 15:08:36 · 1749 阅读 · 0 评论 -
Hadoop数据切片与MapTask并行度决定机制
1、MapTask并行度决定机制数据块:Block是HDFS物理上把数据分成一块一块。数据切片:数据切片只是在逻辑上对输入进行分片,并不会在磁盘上将其切分成片进行存储。假设切片大小设置成100M(1)一个job的Map阶段并行度由客户端在提交job时的切片数决定(2)每一个split切片分配一个MapTask并行实例处理(3)默认情况下,切片大小=BlockSize...原创 2020-01-28 11:55:49 · 696 阅读 · 0 评论 -
Hadoop序列化
1、序列化把内存中的对象转换成字节序列(或其他数据传输协议)以便存储到磁盘和网络传输。2、反序列化将字节序列(或其他数据传输协议)或者磁盘的持久化数据转成内存对象3、Hadoop为什么不使用java的序列化机制java的序列化是一个重量级序列化框架,一个对象被序列化后,会附带很多额外的信息(各种校验信息,Header,继承体系等),不便于在网络中高效传输。4、Hadoop序...原创 2020-01-25 11:19:38 · 343 阅读 · 0 评论 -
Hive分区表
1、分区表分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive 中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。2、分区表基本操作(1)创建分区表create table stuInfo(name string,ag...原创 2020-01-12 11:22:18 · 243 阅读 · 0 评论 -
Hive建表语法
一、建表语法:CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name[(col_name data_type [COMMENT col_comment], ...)][COMMENT table_comment][PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)...原创 2020-01-04 16:18:15 · 1561 阅读 · 0 评论 -
Hive数据类型
一、基本数据类型对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。二、集合数据类型Hive 有三种复杂数据类型 ARRAY、MAP 和 STRUCT。ARRAY 和 MAP 与 Java 中的Array 和 Map 类似,而 STRUCT 与 ...原创 2020-01-04 14:58:48 · 337 阅读 · 0 评论 -
HiveJDBC访问
beeline客户端方式采用JDBC方式借助于Hive Thrift服务访问Hive数据仓库。HiveThrift(HiveServer)是Hive中的组件之一,设计目的是为了实现跨语言轻量级访问Hive数据仓库,有Hiveserver和 Hiveserver2两个版本,两者不兼容,使用中要注意区分。体现在启动HiveServer的参数和jdbc:hiveX的参数上。beeline相关的Ser...原创 2020-01-04 11:32:39 · 716 阅读 · 0 评论 -
Hive架构原理
1.用户接口Client CLI(hive shell)、JDBC/ODBC(java 访问 hive)、WEBUI(浏览器访问 hive)2.元数据Metastore 元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Meta...原创 2020-01-04 10:08:11 · 106 阅读 · 0 评论 -
研磨Hadoop之HDFS读写数据
一、基本概念1、blockhdfs文件系统存储文件的基本单位(副本也是使用块为计量单位存放的)hadoop2.x是默认128M2、packet它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认64KB3、chunk它是client向DataNode,或DataNode的PipLine之间进行数据校验的基本单位,默认512B...原创 2019-11-05 16:01:00 · 238 阅读 · 0 评论 -
研磨Hadoop之HDFS初探
一、HDFS概述1、HDFS的概念HDFS是一个分布式文件系统,通过目录树来定位文件。HDFS的设计适合一次写入,多次读取的场景,且不支持文件的修改。2、HDFS优缺点(1)优点1)高容错性数据自动保存多个副本,通过增加副本提高容错性。某一个副本丢失,可以自动恢复2)适合大数据处理数据规模:可以处理GB、TB、甚至PB的数据文件规模:处理百万以上的文件数量...翻译 2019-10-13 21:05:36 · 142 阅读 · 0 评论