![](https://img-blog.csdnimg.cn/20190725144910638.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
大数据
文章平均质量分 76
当前属于大数据的时代,大量的用户大量的信息,常规的语言进行计算都有些力不从心,大数据中开源主要是Hadoop,spark,hive等。。。
Mr Cao
时间顺流而下,生活逆水行舟。
展开
-
数据仓库hive概念与数据仓库分层、概念模型、逻辑模型、物理模型
数据仓库重点概念Hive的工作流程1、执行查询:从Hive的CLI或Web UI发出查询命令给驱动程序(任何JDBC,ODBC数据库驱动)执行。2、获取计划:驱动程序请求查询编译器解析查询、检查语法、生成查询计划或者查询所需要的资源。3、获取元数据:编译器向元数据存储数据库发送元数据请求。4、发送元数据:作为响应,元数据存储数据库向编译器发送元数据。5、发送计划:编译器检查需要的资源,并将查询计划发送给驱动程序。至此,查询解析完成。6、执行计划:驱动程序向执行引擎发送执行计划。7、执行作业:原创 2020-10-24 19:52:37 · 1654 阅读 · 2 评论 -
Elasticsearch---(4)Elasticsearch DSL常用语法
3、 Elasticsearch DSL常用语法数据准备# 创建索引,设置分片副本,配置映射PUT /demo{ "settings":{ "number_of_replicas": 1, "number_of_shards": 3 }, "mappings":{ "user":{ "properties":{ "name":{"type":"text"}, "age":{"type":"integer"},原创 2020-05-13 13:56:29 · 1541 阅读 · 0 评论 -
Flink系列---Flink流处理WordCount
FlinkStream的WordCount案例这篇直接贴上案例,关于理论方面,我会选文章专门将Flink的运行流程、架构、原理、流处理、批处理的理论。代码结构类型:maven的module该处是DTFlinkStreaming项目结构图pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns...原创 2020-03-12 19:26:34 · 1977 阅读 · 0 评论 -
Flink部署后启动不成功错误
案例:Flink1.9启动Flink查看jps发现没有启动MasterSlave如果启动成功Master应该有StandaloneSessionClusterEntrypointSlave应该有TaskManagerRunner查看启动日志异常日志org.apache.flink.core.fs.UnsupportedFileS...原创 2020-03-04 17:54:22 · 6460 阅读 · 3 评论 -
Flink系列---Flink批处理WordCount(Java、Scala版本)
Flink系列---Flink批处理WordCount(Java、Scala版本)一、配置Linux中的Flink HA集群配置Flink HA集群二、配置IDEA中Flink的环境需要有Scala插件,百度一下即可。三、代码级别pom.xml<?xml version="1.0" encoding="UTF-8"?><project...原创 2020-02-27 23:21:03 · 1575 阅读 · 0 评论 -
Spark性能调优系列:Spark-JVM调优
Spark-JVM调优Spark发生垃圾回收的原理Spark任务运行时会在executor里面不断的创建对象,当JVM存不下对象时,会触发JVM的垃圾回收(GC => grabage Collector),垃圾回收就是把不需要的对象给清除。如果内存中数据量比较大,那么可能会频繁的发生GC,而GC操作本身比较耗费性能,如果还频繁发生,那么对Spark作业性能造成很大的影响。此...原创 2019-12-27 10:25:10 · 740 阅读 · 0 评论 -
Spark性能调优系列:Spark资源模型以及调优
Spark资源模型Spark内存模型Spark在一个Executor中的内存分为三块,execution内存、storage内存、other内存。execution内存是执行内存,join、aggregate都在这部分中执行,shuffle的数据也会先缓存在这个内存中,满了再写入磁盘,能够减少IO,Map过程也是在这个内存中执行的。(0.25)storage内存是存储broad...原创 2019-12-18 21:31:02 · 368 阅读 · 0 评论 -
Spark性能调优系列:Spark参数配置大全(官网资料)
Spark参数配置大全Spark提供了三个位置来配置系统Spark属性控制大多数应用程序参数,可以使用SparkConf对象或Java系统属性来设置。通过conf/spark-env.sh每个节点上的脚本,环境变量可用于设置每台计算机的设置,例如IP地址。可以通过配置日志log4j.properties。Spark属性Spark属性控制大多数应用程序设置,并分别为每个应用...原创 2019-12-18 18:56:54 · 3270 阅读 · 0 评论 -
Spark性能调优系列:Shuffle调优
Spark性能调优系列:Shuffle调优shuffle大部分的Spark作业性能主要是shuffle过程的消耗,shuffle是从Map Task输出到Reduce Task输入这段中间过程,Reduce Task需要从其它节点上的Map Task拉取结果数据,因此shuffle过程包含大量的磁盘IO,序列化,网络数据传输等操作。Spark中常用算子中会触发shuffle操作的算子:...原创 2019-12-03 15:57:36 · 588 阅读 · 0 评论 -
Spark性能调优系列:(八)数据倾斜(使用随机前缀和扩容RDD进行join)
适用场景如果在进行join操作时,RDD中有大量的Key导致数据倾斜,那么进行分拆key也没什么意义,此时就只能使用最后一种解决方案来处理了。实现思路该方案的实现思路基本和上一个相似,首先查看RDD/Hive表中的数据分布情况,找到那个造成数据倾斜的RDD/Hive表,比如有多个key都对应了超过1万条数据,然后将该RDD的每条数据都打上一个N以内的随机前缀,同时对另外一个正常的...原创 2019-11-29 17:44:34 · 1118 阅读 · 0 评论 -
Spark性能调优系列:(七)数据倾斜(采样倾斜key并分拆join操作)
适用场景两个RDD/Hive表进行join的时候,如果数据量都比较大,无法采用上一个方案时,那么此时可以看看两个RDD或hive表中的key分布情况。如果出现数据倾斜,是因为其中的某一个RDD/Hive表中的少数几个key的数据量过大,而另一个RDD/Hive表中的所有key都分布比较均匀,那么采用这个解决方案比较合适。实现思路对包含少数几个数据量过大的key的那个RDD,通过s...原创 2019-11-29 17:43:08 · 465 阅读 · 0 评论 -
Spark性能调优系列:(六)数据倾斜(将reduce join转为map join)
适用场景在对RDD适用join类操作,或者是在SparkSQL中使用join语句时,而且join操作中的一个RDD或表的数据量较小(几百MB到几G),就适用该方案。实现思路不使用join算子进行连接操作,而使用Broadcast变量与map类算子实现join操作,进而完全避免shuffle类的操作,彻底避免数据倾斜的发生和出现,将较小RDD中的数据直接通过collect算子拉取到D...原创 2019-11-28 10:05:49 · 640 阅读 · 0 评论 -
Spark性能调优系列:(五)数据倾斜(两阶段聚合(局部聚合+全局聚合))
两阶段聚合(局部聚合+全局聚合)适用场景对RDD执行reduceByKey等聚合类shuffle算子或者在SparkSQL中使用Groupby语句进行分组聚合时,比较适用这种方案。实现思路核心实现思路就是进行两阶段聚合。第一次是局部聚合,先给每个key都打上一个随机数,比如10以内的随机数,此时原先一样的key就变成不一样的了,比如:(hello,1)(hello,1)(h...原创 2019-11-21 11:40:18 · 832 阅读 · 2 评论 -
Spark性能调优系列:(四)数据倾斜(提高shuffle操作的并行度)
提高shuffle操作的并行度使用场景如果必须要对数据倾斜迎难而上,那么建议优先使用该方案,因为这是处理数据倾斜最简单的一种。实现思路在对RDD执行shuffle算子时,给shuffle算子传入一个参数,比如reduceByKey(1000),该参数就设置了这个shuffle算子执行时shuffle read task的数量,对于SparkSQL中的shuffle类语句,比...原创 2019-11-20 11:47:33 · 909 阅读 · 2 评论 -
Spark性能调优系列:(三)数据倾斜(过滤少数导致倾斜的key)
过滤少数导致倾斜的key使用场景如果发现导致倾斜的key就少数几个,而且对计算本身的影响并不大的话,那么非常适合该方案。(比如:99%的key就对应100条数据,只有1个key对应百万条数据,从而导致数据倾斜)实现思路如果觉得那少数几个数据量特别多的key对作业执行和计算结果不是特别重要,那么干脆就过滤那少数的key。(比如:SparkSQL中可以使用where子句过滤掉这些...原创 2019-11-19 18:32:39 · 313 阅读 · 0 评论 -
Spark性能调优系列:(二)数据倾斜(Hive ETL预处理数据方案)
Hive ETL预处理数据方案适用场景 导致数据倾斜的是Hive表,如果Hive表中的数据本身分布不均匀(比如:某个key对应了100万数据,其他key只对应了100条数据),而且业务场景需要频繁使用到Spark对Hive表执行某个分析操作,那么比较适用使用这种技术方案。实现思路: 评估是否可以通过Hive来进行数据预处理(即通过HiveETL预先对数据按照key进行...原创 2019-11-19 17:31:27 · 665 阅读 · 1 评论 -
Spark性能调优系列:(一)数据倾斜(原理)
数据倾斜一、概述:有时,我们会遇到数据倾斜,在遇到数据倾斜的时候Spark作业的性能会比期望差很多,这时,我们就需要对数据倾斜进行调优,以保证Spark作业的性能。二、数据倾斜发生时的现象:1.绝大多数Task执行得非常快,但个别Task执行会极慢。2.本来能够正常执行的Spark作业,某天突然爆出OOM(内存溢出)异常,又不是业务代码造成。三、数据倾斜发生的原理:...原创 2019-11-15 15:55:55 · 259 阅读 · 0 评论 -
Spark系列---SparkSQL(五)创建json格式的list注册成临时表用sql语句查询
1.创建json格式的list注册成临时表用sql语句查询scala版本package com.kevin.scala.dataframeimport org.apache.spark.sql.SQLContextimport org.apache.spark.{SparkConf, SparkContext}/** * 创建json格式的list注册成临时表用sql语句查...原创 2019-10-31 18:36:08 · 1419 阅读 · 0 评论 -
Spark系列---SparkSQL(四)动态与反射方式创建DataFrame(Java、Scala版本)
1.动态创建Scheme将非json格式RDD转换成DataFrame,推荐scala版本package com.kevin.scala.dataframeimport org.apache.spark.sql.types._import org.apache.spark.sql.{RowFactory, SQLContext}import org.apache.spark.{S...原创 2019-10-31 18:33:45 · 623 阅读 · 0 评论 -
Spark系列---SparkSQL(三)读取Txt文件、Json文件、Hive、Mysql数据源(Java、Scala版本)
1.读取txt文件scala版本package com.kevin.scala.dataframeimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.SQLContext/** * 读取txt文件转成DataFrame形式操作 */object DataFrameTx...原创 2019-10-31 18:30:19 · 8245 阅读 · 0 评论 -
Spark系列---SparkSQL(二)读取txt文件转为DataFrame表的所有action(Java、Scala版本)
该文章只附上代码案例,不进行讲解,需要了解的看以下文章Spark系列---SparkSQL(一)介绍与使用Spark系列---Spark算子RDD(Java、Scala版本)读取txt文件转为DataFrame表的所有actionscala版本package com.kevin.scala.dataframeimport org.apache.spark.{SparkCo...原创 2019-10-31 18:20:05 · 2903 阅读 · 0 评论 -
Spark性能调优系列:数据本地化
Spark数据本地化背景:数据本地化对于Spark Job性能有着巨大的影响,如果数据以及要计算它的代码是一起的,那么性能当然会非常高。但是如果数据与计算它的代码是分开的,那么其中之一必须到另外一方机器上,通常来说,移动代码到其它节点,会比移动数据到代码所在的节点上,速度要快的多。因为代码较小,Spark也正是基于这个数据本地化的原则来构建Task调度算法的。数据本地化:数据离计算它...原创 2019-10-31 18:04:23 · 309 阅读 · 0 评论 -
Spark性能调优系列:(九)开发调优(优化数据结构)
优化数据结构Java中有三种类型比较耗费内存:1.对象,每个Java对象都有对象头,引用等额外的信息,因此比较占用内存空间。2.字符串,每个字符串内部都有一个字符数组以及长度等额外信息。3.集合类型,比如HashMap、LinkedList等,因为集合类型内部通常会使用一些内部类来封装集合元素,比如Map.Entry。Spark官方建议,在Spark编码实现中,特别是对于算子...原创 2019-10-31 17:29:02 · 170 阅读 · 0 评论 -
Spark性能调优系列:(八)开发调优(使用Kryo优化序列化性能)
使用Kryo优化序列化性能Spark主要有三个地方涉及序列化:1.算子函数中使用到外部变量时,该变量会被序列化后进行网络传输。2.将自定义类型作为RDD的泛型类型时(比如Student是自定义类型),所有自定义类型对象,都会进行序列化。因此该情况下,也要求自定义的类必须实现Serializable接口。3.使用可序列化的持久策略时(比如MEMORY_ONLY_SER),Spark会将...原创 2019-10-31 17:18:28 · 280 阅读 · 0 评论 -
Spark性能调优系列:(七)开发调优(广播大变量)
广播大变量开发过程中,如果需要在算子函数中使用外部变量的场景(尤其是100m以上的数据),那么此时应该使用广播变量来提升性能。算子函数中,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本,如果变量本身比较大,那么大量的变量副本在网络中传输的性能开销以及各个节点的Executor中占用过多内存导致的频繁GC,都会极大影响性能。如果使...原创 2019-10-31 16:47:40 · 253 阅读 · 0 评论 -
Spark性能调优系列:(六)开发调优(使用高性能的算子)
使用高性能的算子1.使用reduceByKey、aggregateByKey替代groupByKey。详细看https://blog.csdn.net/qq1021979964/article/details/1026780162.使用mapPartitions替代普通mapmapPartitions类的算子,一次函数会调用处理一个partition所有的数据,不是一次函数调用...原创 2019-10-22 18:39:10 · 384 阅读 · 0 评论 -
Spark性能调优系列:(五)开发调优(尽量使用map-side预聚合的shuffle操作)
使用map-side预聚合的shuffle操作如果一定需要使用shuffle操作,无法使用map类的算子来替代的时候,尽量使用map-side预聚合的算子。map-side预聚合每个节点本地对相同的key进行一次聚合操作,类似MapReduce中的本地Combiner,map-side预聚合之后,每个节点本地就只有一条相同的key,在其它节点在拉取所有节点上的相同key时,就会大量减...原创 2019-10-22 10:38:48 · 617 阅读 · 0 评论 -
Spark性能调优系列:(三)开发调优(尽可能复用同一个RDD)
调优:尽可能复用同一个RDD在对不同的数据执行算子操作时还要尽可能地复用一个RDD。多个RDD的数据有重叠或者包含的情况,我们应该尽量复用一个RDD,这样可以尽可能地减少RDD的数量,从而尽可能减少算子执行的次数。比如:有一个RDD的数据格式是key-value类型的,另一个rdd是单value类型的,这两个RDD的value数据是完全一样的。那么此时我们可以只使用key-value类...原创 2019-10-21 15:37:48 · 294 阅读 · 0 评论 -
Spark性能调优系列:(二)开发调优(避免创建重复的RDD)
调优:避免创建重复的RDD对于同一份数据,只应该创建一个RDD,不能创建多个RDD来代表同一份数据。如果同份数据创建多个RDD,则Spark会多次重复计算来创建多个代表相同数据的RDD,进而增加了作业的性能开销。案例:package com.kevin.scala.tuningimport org.apache.spark.{SparkConf, SparkContext}...原创 2019-10-21 15:37:00 · 347 阅读 · 0 评论 -
Spark性能调优系列:(一)开发调优(将重复使用的RDD进行持久化)
为什么调优?由于Spark的计算本质是基于内存的,所以Spark性能程序的性能可能因为集群中的任何因素出现瓶颈:CPU、网络带宽、或者是内存。情况一:内存大能够容纳所有数据,那么网络传输和通信就会导致性能出现瓶颈。情况二:内存小不能容纳所有数据(10亿级以上数据量),则需要对内存的使用进行性能优化。调优:将重复使用的RDD进行持久化Spark单个RDD多次执行原理:每次执行RDD进...原创 2019-10-21 15:36:07 · 356 阅读 · 0 评论 -
Spark性能调优系列:(四)开发调优(尽量避免使用shuffle类算子)
调优:尽量避免使用shuffle类算子Spark作业运行过程中,最消耗性能的就是shuffle过程shuffle过程:将分布在集群中多个节点的同一个key,拉取到同一个节点上进行聚合或join操作,比如reduceByKey、join等算子都会触发shuffle操作。shuffle过程中shuffle过程中,各个节点上的相同Key都会先写入本地磁盘文件中,然后其它节点需要通过网络...原创 2019-10-21 17:28:07 · 455 阅读 · 0 评论 -
Spark系列---SparkSQL(一)介绍与使用
SparkSQL前世今生SparkSQL 1.0版本之前:Shark -> Hive on SparkSparkSQL 1.0版本之后:SparkSQLSparkSQL 1.3.X版本:SparkSQL+DataFrameSparkSQL 1.5.X版本:SparkSQL+钨丝计划SparkSQL 1.6.X版本:SparkSQL+DataFrame+DataSetSpark...原创 2019-10-18 19:23:20 · 598 阅读 · 0 评论 -
Hadoop---(6)Sqoop(数据传输)
6.Sqoop Sqoop是一个用于hadoop数据和结构化数据之间转换的工具。全称SQL-TO-HADOOP.它可以把hadoop数据,包括hive和hbase存储的数据转化为结构化数据也就是数据库的数据,也可以把关系型数据库数据转化为hadoop数据 这些转换操作全是通过Hadoop的MapTask来完成的,并不会涉及到Reduce操作。这是因为我们只是进行数据的拷贝...原创 2019-01-30 16:53:50 · 415 阅读 · 0 评论 -
Hadoop---(5)Hive(数据仓库)
5.1 Hive的系统架构 用户接口,包括CLI,JDBC/ODBC,WebUI。元数据存储,通常是存储在关系数据库如mysql,derby中。解释器、编译器、优化器、执行器。Hadoop:用HDFS进行存储,利用MapReduce进行计算。 1. 用户接口主要有三个:CLI,JDBC/ODBC和WebUICLI,即Shell命令...原创 2019-01-30 16:51:53 · 520 阅读 · 0 评论 -
Hadoop---(4)HBase(分布式存储系统)
HBASEHBase(Hadoop Database),是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中海量数据。利用Zookeeper作为协调工具。 HMaster— HBase...原创 2019-01-30 16:50:07 · 1900 阅读 · 0 评论 -
Hadoop---(3)Zookeeper(分布式协调服务)
3. Zookeeper Zookeeper是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务。 Zookeeper包含一个简单的原语集,分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、配置维护、名字服务、分布式同步、分布式锁和分布式队列等功能。 Zooke...原创 2019-01-30 16:44:16 · 743 阅读 · 0 评论 -
Hadoop---(2)MapReduce(分布式计算编程模型)
2. MapReduce MapReduce:是一种分布式计算编程模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。MR由两个阶段组成:MapReduce,用户只需要实现map()和reduce()两个函数几科实现分布式计算。这两个函数的形参是key,value对,表示函数的输入信息。 2.1MapReduce的构架主从结构:主节点,只有一个:Jo...原创 2019-01-30 16:37:19 · 2562 阅读 · 0 评论 -
Hadoop---(1)HDFS(分布式文件系统)
Hadoop的特点:扩容能力(Scalable):能可靠地(reliably)存储和处理千兆节点(PB)的数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。可靠性(Reli...原创 2019-01-30 16:14:33 · 481 阅读 · 0 评论 -
Centos7搭建Hadoop HA完全分布式集群(6台机器)(内含hbase,hive,flume,kafka,spark,sqoop,phoenix,storm)
目录Centos7搭建Hadoop HA完全分布式集群(6台机器)(内含hbase,hive,flume,kafka,spark,sqoop,phoenix,storm). 1前期配置. 2安装jdk 5安装zookeeper 7安装hadoop 8启动集群. 17安装hbase 21安装hive 27安装Flume 34安装kafka 37安装spar...原创 2019-01-30 15:51:42 · 2648 阅读 · 4 评论 -
Kafka中Topic的删除
Kafka中Topic的删除 topic的删除例子:删除testtopic bin/kafka-topics.sh --list --zookeeper localhost:2181 1.删除kafka存储目录下对应的topic(server.properties) ls rm -rf test-0 ...原创 2018-12-18 21:39:39 · 218 阅读 · 0 评论