
hadoop
文章平均质量分 78
静默安然
这个作者很懒,什么都没留下…
展开
-
hive分区表
一、分区表分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。分区表的应用:日志是每天放在一个文件夹中partition(分区),每个分区再划分为簇组,方便查询。二、实例1.根据日期对日志进行管理单分区查询根据分区进行查询,大大提高了查询效率。 多分...原创 2021-01-27 16:35:47 · 361 阅读 · 0 评论 -
Hive数据类型
三 Hive数据类型3.1 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符号整数 20 INT int原创 2021-01-25 11:20:45 · 280 阅读 · 0 评论 -
hive创建表(内部表和外部表)
一、理论1)建表语法 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], ...)] [CLUSTERED BY (col_name, col_nam原创 2021-01-24 22:40:43 · 15422 阅读 · 0 评论 -
Hive常见属性配置
1 hive原始数据仓库的配置1.1hive原始数据仓库配置默认在(/user/hive/warehouse下)hive/conf/hive-default.xml.templa1.2查看数据仓库位置2.hive在default数据库下或者未指定数据库下创建的表默认会在/user/hive/warehouse中3.实现显示当前数据库,以及查询表的头信息配置。在hive-site.xml文件中添加如下配置信息。<property> <name>hiv原创 2021-01-21 16:13:49 · 253 阅读 · 0 评论 -
hive的元数据Derby,命令行工具 beeline
安装mysql用于存储hive的元数据Hive默认数据库类型Derbyhive 默认使用Derby作为Hive metastore的存储数据库,这个数据库更多用于单元测试,只支持一个用户访问,在生产环境,建议改成功能更强大的关系型数据库,根据官网的介绍,支持用于存储hive元数据的数据库如下:hive元数据支持的数据库 最低版本要求 MySQL 5.6.17 Postgres 9.1.13 Oracle 11g MS SQL Server 2008.原创 2021-01-19 19:54:54 · 366 阅读 · 0 评论 -
hive交互命令学习
Hive官网(HQL)语法手册(英文版):https://cwiki.apache.org/confluence/display/Hive/LanguageManualHive的数据存储 1、Hive中所有的数据都存储在HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等) 2、只需要在创建表的时候告诉Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。 3、Hive 中包含以下数据模型:DB、...转载 2021-01-18 18:33:12 · 212 阅读 · 1 评论 -
Hive学习重点概览
红色必须熟练掌握,SQL语言必须掌握,尤其是查询语言,企业级优化是重点(面试95%会问)原创 2020-12-30 20:32:30 · 147 阅读 · 0 评论 -
Hive基本概念学习之Hive架构原理 (面试)
一、Hive的概念数据仓库是面向主题的(分类存储),数据仓库的数据是集成的,数据仓库的数据是不可更新的(但可以将原始数据清洗,不断增加,不会修改)。Hive是基于hadoop的一个管理数据仓库的工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询。本质是将HQL(Hive SQL)化成MapReduce程序,HIve是建立在hadoop上的 ,管理数据的。Hive类似于蜂巢一样,数据按类别进行统计,很少修改,主要写入后用于查询。二、Hive优缺点2.1优点..原创 2020-12-30 20:26:03 · 464 阅读 · 0 评论 -
Hadoop组件介绍(下)
Hbase是面向列的数据库,普通的关系型数据库是面向行的存储结构(面向行:向数据库插入一条记录,这个记录就是一行)。Hbase建立的表有三个关键字段,第一个是RowKey:类似于主键,唯一的标识一行,第二个字段是Timestamp时间戳,HBASE在插入新数据时,旧数据不会被覆盖掉,而是新数据加上一个新的时间戳;第三个字段是Column Family即列族,允许一个表下有多个列族,一个列族下有多个列,但一般建议设置一个列族。列族名:列名。好处:例如QQ的业务办理都大量稀疏矩阵,在此基础上,增加...原创 2020-12-30 14:34:17 · 213 阅读 · 0 评论 -
hadoop组件介绍(上)
MapReduce1.x运行在Hadoop之上,而现在MapReduce是运行在Yarn之上,Yarn主要包含两大组件,ResourceManger主要负责是管理资源,AppApplicationMaster主要是用来向ResourceManger申请资源以及向管理各个节点的子任务的执行。引入Yarn是因为taskTracker,joinTracker既要负责任务调度又要负责资源分配,导致负载非常重,于是把资源管理分给Yarn.Hive是一个离线批处理的SQL查询框架,Hive跑在ma...原创 2020-12-30 11:24:00 · 198 阅读 · 0 评论 -
Hadoop组件介绍(中)
ETL(数据仓库技术)编辑ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。磁盘上的一个数据如果想用网络发送出去,传统流程是先要把数据读取到用户进程里面,然后由用户进程写回操作系统上下文中,再由操作系统送到网卡的缓存里,再由网卡的缓存发送出去。如果使用Linux操作系统提供的zero-copy...原创 2020-12-30 11:51:31 · 156 阅读 · 0 评论 -
InputFormat接口实现类(选择题)
MapReduce任务的输入文件一般是存储在HDFS里面。输入的文件格式包括:基于行的日志文件、二进制格式文件等。这些文件一般会很大,达到数十GB,甚至更大。那么MapReduce是如何读取这些数据的呢?下面我们首先学习InputFormat接口。InputFormat常见的接口实现类包括:TextInputFormat、KeyValueTextInputFormat、NLineInputFormat、CombineTextInputFormat和自定义InputFormat等。1)TextInpu原创 2020-12-05 17:14:44 · 426 阅读 · 0 评论 -
Hadoop企业优化(一)之MapReduce 优化
6.1 MapReduce 跑的慢的原因Mapreduce 程序效率的瓶颈在于两点:1)计算机性能CPU、内存、磁盘健康、网络2)I/O 操作优化(1)数据倾斜(2)map和reduce数设置不合理(3)map运行时间太长,导致reduce等待过久(4)小文件过多(5)大量的不可分块的超大文件(6)spill次数过多(7)merge次数过多等。6.2 MapReduce优化方法MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Red...原创 2020-12-05 17:11:26 · 118 阅读 · 0 评论 -
Hadoop企业优化(二)之HDFS小文件优化方法(****)
1 HDFS小文件弊端HDFS上每个文件都要在namenode上建立一个索引,这个索引的大小约为150byte,这样当小文件比较多的时候,就会产生很多的索引文件,一方面会大量占用namenode的内存空间,另一方面就是索引文件过大是的索引速度变慢。2 解决方案1)Hadoop Archive:是一个高效地将小文件放入HDFS块中的文件存档工具,它能够将多个小文件打包成一个HAR文件,这样就减少了namenode的内存使用。2)Sequence file:sequence file..原创 2020-12-05 17:09:09 · 117 阅读 · 0 评论 -
任务的推测执行(****)
1)作业完成时间取决于最慢的任务完成时间一个作业由若干个Map任务和Reduce任务构成。因硬件老化、软件Bug等,某些任务可能运行非常慢。典型案例:系统中有99%的Map任务都完成了,只有少数几个Map老是进度很慢,完不成,怎么办?2)推测执行机制:发现拖后腿的任务,比如某个任务运行速度远慢于任务平均速度。为拖后腿任务启动一个备份任务,同时运行。谁先运行完,则采用谁的结果。3)执行推测任务的前提条件(1)每个task只能有一个备份任务;(2)当前job已完成的task必须不小于原创 2020-12-05 16:15:36 · 255 阅读 · 0 评论 -
Hadoop资源调度器(****)
调度器目前,Hadoop作业调度器主要有三种:FIFO(1.x系列老版本)、Capacity Scheduler和Fair Scheduler。Hadoop2.7.2默认的资源调度器是Capacity Scheduler。具体设置详见:yarn-default.xml文件 <property> <description>The class to use as the resource scheduler.</description> ...原创 2020-12-05 15:57:07 · 171 阅读 · 0 评论 -
Yarn学习(*****)
1、Hadoop四大组件是什么?各自的作用是什么?1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。2)HadoopMapReduce:一个分布式的离线并行计算框架。3)HadoopYARN:作业调度与集群资源管理的框架。4)Hadoop Common:支持其他模块的工具模块。2、Yarn介绍Yarn的起源在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。在Hadoop2.x时代,增加了Yarn。Yarn..原创 2020-12-05 15:28:16 · 209 阅读 · 0 评论 -
Hadoop数据压缩
1 概述压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络带宽和磁盘空间的效率。在Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。在这种情况下,I/O操作和网络数据传输要花大量的时间。还有,Shuffle与Merge过程同样也面临着巨大的I/O压力。鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。不过,尽管压缩与解压操作的CPU开销不高,其性能的提升和资源的节省并非没有代价。如果原创 2020-12-04 14:25:14 · 95 阅读 · 0 评论 -
Map输出端、Reduce输出端采用压缩
即使你的MapReduce的输入输出文件都是未压缩的文件,你仍然可以对map任务的中间结果输出做压缩,因为它要写在硬盘并且通过网络传输到reduce节点,对其压缩可以提高很多性能,这些工作只要设置两个属性即可,我们来看下代码怎么设置:1)给大家提供的hadoop源码支持的压缩格式有:BZip2Codec 、DefaultCodecMap输出端压缩,但是Reduce是没压缩的。要想输出压缩,要设置reduce输出端压缩。Map输出端的压缩格式不影响Reduce端的。Reduce输出端采用压缩原创 2020-12-04 14:03:05 · 463 阅读 · 0 评论 -
压缩/解压缩案例
数据流的压缩和解压缩CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据。要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutputStream(OutputStreamout)方法创建一个CompressionOutputStream,将其以压缩格式写入底层的流。相反,要想对从输入流读取而来的数据进行解压缩,则调用createInputStream(InputStreamin)函数,从而获得一个CompressionInputStream,从而从底层的流读取未.原创 2020-12-04 13:40:55 · 212 阅读 · 0 评论 -
MapReduce之寻找博客共同好友
1)需求:以下是博客的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的),求出哪些人两两之间有共同好友,及他俩的共同好友都有谁?A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,J首先说明数据单向的意思可以理解为:A关注了B,C原创 2020-12-03 16:27:20 · 273 阅读 · 0 评论 -
java.lang.Exception: java.lang.ArrayIndexOutOfBoundsException: 1(无奈,深层原因未找到)
数据A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,JMapReduce博客找好友报错,如果把数据直接从txt记事本中粘贴过来就报这个数组越界错误(但是并没有越界,且可以正常在控制才输出,但无法进行下一步),但是如果把粘贴到QQ,再粘贴到TXT,或者是自己手动输入数据则原创 2020-12-03 14:03:38 · 4308 阅读 · 2 评论 -
倒排索引案例(多job串联)两个MapReduce串联工作
需求:有大量的文本(文档、网页),需要建立搜索索引输入 输出分析: 分两次MapReduce工作,第一次预期输出atguigu--a.txt 3atguigu--b.txt 2atguigu--c.txt 2pingping--a.txt 1pingping--b.txt 3pingping--c.txt 1ss--a.txt 2ss--b.txt 1ss--c.txt 1第二次预期输出atguigu c.txt-->2 b.txt-->2 a原创 2020-12-02 19:12:40 · 339 阅读 · 0 评论 -
计数器应用
计数器应用(多线程情况下,无法使用debug调试代码,只能通过计数器的方式来调节)打log和debug是解决问题的重要手段Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。1)API(1)采用枚举的方式统计计数enum MyCounter{MALFORORMED,NORMAL}//对枚举定义的自定义计数器加1context.getCounter(MyCounter.MALFOR原创 2020-12-01 19:35:40 · 309 阅读 · 0 评论 -
数据清洗(ETL)--简单解析版(日志清洗案例)
数据清洗(ETL)1)概述在运行核心业务Mapreduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据。清理的过程往往只需要运行mapper程序,不需要运行reduce程序。7.7.1 简单解析版1)需求:去除日志中字段长度小于等于11的日志。2)输入数据194.237.142.21 - - [18/Sep/2013:06:49:18 +0000] "GET /wp-content/uploads/2013/07/rstudio-git3.png HTTP/1.原创 2020-12-01 19:09:30 · 1860 阅读 · 0 评论 -
Job提交流程和切片源码详解(****)
1)job提交流程源码详解 waitForCompletion() submit(); // 1建立连接 connect(); // 1)创建提交job的代理 newCluster(getConfiguration()); // (1)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2 提交job submitter.submitJobInternal(Job.this, c.原创 2020-12-01 14:12:18 · 192 阅读 · 0 评论 -
MapReduce中多表合并案例之Map端表合并(Distributedcache)
Map端表合并(Distributedcache)1)分析适用于关联表中有小表的情形;可以将小表分发到所有的map节点,这样,map节点就可以在本地对自己所读到的大表数据进行合并并输出最终结果,可以大大提高合并操作的并发度,加快处理速度。订单数据表t_order: id pid amount 1001 01 1 1002 02原创 2020-12-01 14:04:21 · 348 阅读 · 0 评论 -
MapReduce中多表合并案例【Reduce端表合并(数据倾斜)】
1)需求:订单数据表t_order: id pid amount 1001 01 1 1002 02 2 1003 03 3 商品信息表t_product pid pname 01原创 2020-11-30 23:07:18 · 585 阅读 · 0 评论 -
过滤日志及自定义日志输出路径案例(自定义OutputFormat)
自定义OutputFormat为了实现控制最终文件的输出路径,可以自定义OutputFormat。要在一个mapreduce程序中根据数据的不同输出两类结果到不同目录,这类灵活的输出需求可以通过自定义outputformat来实现。1)自定义OutputFormat步骤(1)自定义一个类继承FileOutputFormat。(2)改写recordwriter,具体改写输出数据的方法write()。2)实操案例:1)需求过滤输入的log日志中是否包含atguigu(1)包含原创 2020-11-30 12:32:42 · 290 阅读 · 0 评论 -
二次排序(GroupingComparator)
1)需求有如下订单数据 订单id 商品id 成交金额 0000001 Pdt_01 222.8 0000001 Pdt_06 25.8 0000002 Pdt_03 522.8 0000002 Pdt_04原创 2020-11-29 16:49:13 · 619 阅读 · 0 评论 -
mapreduce工作流程(*****)
Map工作流程Reduce工作流程Shuffle机制Mapreduce确保每个reducer 的输入都是按键排序的。系统执行排序的过程(即将map输出作为输入传给reducer)称为shuffle。官网详细展开原创 2020-11-29 16:38:57 · 101 阅读 · 0 评论 -
小文件处理案例(自定义InputFormat)
1)需求无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。将多个小文件合并成一个文件SequenceFile,SequenceFile里面存储着多个文件,存储的形式为文件路径+名称为key,文件内容为value。2)输入数据one.txt hhhhhtwo.txt yyyyythree.txt akjfkajkfak3)分析小文件的优化无非以下几种方式:(1)在数据采集的时候,就将小文件或小批数据合.原创 2020-11-29 15:00:43 · 147 阅读 · 0 评论 -
Combiner合并(减轻Reduce压力,提高效率)
1)combiner是MR程序中Mapper和Reducer之外的一种组件。2)combiner组件的父类就是Reducer。3)combiner和reducer的区别在于运行的位置:Combiner是在每一个maptask所在的节点运行;Reducer是接收全局所有Mapper的输出结果;4)combiner的意义就是对每一个maptask的输出进行局部汇总,以减小网络传输量。5)combiner能够应用的前提是不能影响最终的业务逻辑,而且,combiner的输出kv应该跟redu原创 2020-11-27 23:26:15 · 387 阅读 · 0 评论 -
MapReduce之合并小文件---量小文件的切片优化(CombineTextInputFormat)
0)需求:将输入的大量小文件合并成一个切片统一处理。1)输入数据:准备5个小文件2)实现过程(1)不做任何处理,运行需求1中的wordcount程序,观察切片个数为5(2)在WordcountDriver中增加如下代码,运行程序,并观察运行的切片个数为1 // 如果不设置InputFormat,它默认用的是TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);Combin原创 2020-11-26 20:35:58 · 251 阅读 · 0 评论 -
MapReduce 之流量汇总案例四+不同省份输出文件内部排序(部分排序)
1)需求要求每个省份手机号输出的文件中按照总流量内部排序。2)分析:基于需求3,增加自定义分区类即可。3)案例实操(1)增加自定义分区类package com.lzz.mapreduce.flowsort;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Partitioner;public class FlowSortProvincePartitioner extends Part原创 2020-11-26 20:13:19 · 311 阅读 · 1 评论 -
MapReduce 之流量汇总案例三+将统计结果将统计结果按照总流量正序排序(全排序)
0)需求根据需求1产生的结果再次对总流量进行排序。1)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20-10-7A原创 2020-11-26 20:09:15 · 533 阅读 · 0 评论 -
MapReduce 之流量汇总案例二+将统计结果按照手机归属地不同省份输出到不同文件中(Partitioner)
0)需求:将统计结果按照手机归属地不同省份输出到不同文件中(分区)1)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20原创 2020-11-26 20:01:18 · 384 阅读 · 0 评论 -
流量汇总案例(一)之统计手机号耗费的总上行流量、下行流量、总流量(序列化)
1)需求:统计每一个手机号耗费的总上行流量、下行流量、总流量2)数据准备1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001363157995052 13826544101 5C-0E-8B-C7-F1-E0:CMCC 120.197.40.4 4 0 264 0 2001363157991076 13926435656 20-原创 2020-11-26 19:37:25 · 2125 阅读 · 0 评论 -
MapReduce入门+编程wordcount实例
一、MapReduce1 MapReduce定义MapReduce是一种分布式运算程序的框架,是用户开发“基于Hadoop的数据分析应用”的核心框架,Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。2 MapReduce的优缺点2.1 优点易于编程,使用户开发代码就像写简单的串行程序一样。可以处理PB(1PB=1024TB=10 6GB=10 9MB=10 12KB=10 15B以上的海量数据高容原创 2020-11-23 18:22:25 · 1673 阅读 · 0 评论 -
HDFS面试点
这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。1)Client:就是客户端。(1)文件切分。文件上传 HDFS 的时候,Client 将文件切分成一个一个的Block,然后进行存储。(2)与NameNode交互,获取文件的位置信息。(3)与DataNode交互,读取或者写入数据。(4)Client提供...原创 2020-11-06 20:51:11 · 123 阅读 · 0 评论