自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王佩的CSDN博客

 仰望星空,脚踏实地

  • 博客(133)
  • 资源 (38)
  • 收藏
  • 关注

原创 Spark Streaming平滑停止

对于长期运行在Yarn上的Spark Streaming作业,尤其是要保证不丢不重语义的作业,不能简单使用yarn application -kill <Application ID>命令来停止,应当使用平滑停止策略。思路: 在Driver端,启动一个检测线程,周期性检测HDFS上的标记文件是否存在,存在则平滑停止,不存在则继续运行。伪代码如下: val ssc = new Str...

2019-06-02 15:32:26 1126

原创 Spark Streaming动态资源分配

同反压机制一样,Spark Streaming动态资源分配(即DRA,Dynamic Resource Allocation)也可以用来应对流处理中批次流量过载的场景。Spark Streaming动态资源分配,允许为应用动态分配资源。当任务积压时,申请更多资源;当任务空闲时,使用最少资源。在生产中,可将动态资源分配和背压机制一起使用,通过背压机制来细粒度确保系统稳定;通过动态资源分配机制来粗...

2019-06-01 22:39:01 2975 1

原创 Spark Streaming反压机制

反压(Back Pressure)机制主要用来解决流处理系统中,处理速度比摄入速度慢的情况。是控制突增流量中每个批次流量过载的有效手段。反压机制原理Spark Streaming中的反压机制是Spark 1.5.0推出的新特性,可以根据处理效率动态调整摄入速率。当批处理时间(Batch Processing Time)大于批次间隔(Batch Interval,即 BatchDuration...

2019-06-01 12:11:53 1856 1

原创 Spark Streaming空DStream判断

在Spark Streaming中对空DStream的判断,最终都是对空RDD的判断。一般有三种方法:计数(RDD.count),分区(RDD.partitions.length),计数+分区(RDD.isEmpty)。RDD.count适用于所有类型的DStream,但由于是Action算子,会触发SparkContext.runJob方法,从而导致Job的提交和运行,当数据量较大时,代价也...

2019-05-14 08:07:44 2006

原创 Spark Streaming状态操作: updateStateByKey、mapWithState、基于window的状态操作

在Spark Streaming中,DStream的转换分为有状态和无状态两种。无状态的操作,即当前批次的处理不依赖于先前批次的数据,如map()、flatMap()、filter()、reduceByKey()、groupByKey()等等;而有状态的操作,即当前批次的处理需要依赖先前批次的数据,这样的话,就需要跨批次维护状态。updateStateByKey //状态更新函数 val ...

2019-05-14 06:59:09 2544

原创 Spark Streaming读取Kafka数据的两种方式

Kafka在0.8和0.10之间引入了一种新的消费者API,因此,Spark Streaming与Kafka集成,有两种包可以选择: spark-streaming-kafka-0-8与spark-streaming-kafka-0-10。在使用时应注意以下几点:spark-streaming-kafka-0-8兼容Kafka 0.8.2.1及以后的版本, 从Spark 2.3.0开始,对K...

2019-04-20 16:49:40 6022 1

原创 Spark Streaming保证Exactly-Once语义

在流计算引擎如Apache Storm、Apache Kafka(Kafka Streams)、Apache Spark(Spark Streaming、Spark Structured Streaming)、Apache Flink中,经常提到Exactly-Once语义,那Exactly-Once究竟是啥意思?当流计算引擎声称Exactly-Once时,究竟意味着啥?Spark Streami...

2019-04-13 09:03:01 4591 3

原创 Spark Streaming中的batchDuration​、windowDuration、slideDuration

Spark Streaming是一种面向微批(micro-batch)处理的流计算引擎。将来自Kafka/Flume/MQ等的数据,Duration含义batchDuration: 批次时间。多久一个批次。windowDuration: 窗口时间。要统计多长时间内的数据。必须是batchDuration整数倍。slideDuration: 滑动时间。窗口多久滑动一次。必须是batchDu...

2019-04-06 23:43:56 1849

原创 Spark 推测执行

Spark 推测执行是一种优化技术。在Spark中,可以通过推测执行,即Speculative Execution,来识别并在其他节点的Executor上重启某些运行缓慢的Task,并行处理同样的数据,谁先完成就用谁的结果,并将另一个未完成的Task Kill掉,从而加快Task处理速度。适用于某些Spark任务中部分Task被hang住或运行缓慢,从而拖慢了整个任务运行速度的场景。注意:...

2019-03-31 13:04:37 5788 1

原创 Spark RDD、DataFrame、Dataset 比较以及相互转换

Spark 支持三种API:RDD、DataFrame 和 Dataset。这里,总结这三种API的差异以及相互之间的转换。RDD、DataFrame、Dataset比较 RDDDataFrameDatasetSpark 1.x✅(从0.6.0开始)✅(从1.3.0开始)✅(从1.6.0开始是试验性的)Spark 2.x✅✅✅Immu...

2019-03-23 01:07:34 3833

原创 Impala中使用Hive UDF

在Impala中,可以使用两种UDF:基于Java的UDF:即用Java编写的Hive UDF。基于C++的UDF: 用C++编写的UDF。这里总结在Impala中使用Hive UDF。Hive 1.2中没有md5函数,Impala中默认也没有类似函数,则可通过自定义UDF来实现。注:从Hive 1.3.0开始,已经内置了md5函数。Hive UDF编写继承Hive UD...

2019-03-16 22:56:25 2960

原创 Impala中的Invalidate Metadata和Refresh

Impala中有两种同步元数据的方式:INVALIDATE METADATA和REFRESH。使用Impala执行的DDL操作,不需要使用任何INVALIDATE METADATA / REFRESH命令。CatalogServer会将这种DDL元数据变化通过StateStore增量同步到集群中的所有Impalad节点。在Impala之外,使用Hive或其他Hive客户端(如Spark SQL...

2019-03-15 08:57:40 2788

原创 Impala Shell常用命令行选项与常用命令

常用命令行选项-h或–help显示帮助信息。[root@node2 ~]# impala-shell -h-i或–impalad连接到指定的impalad节点。[root@node2 ~]# impala-shell -i node3-q或–query指定要执行的Sql语句。[root@node2 ~]# impala-shell -q "select studentid,s...

2019-03-15 07:32:51 6153 2

原创 Apollo配置中心多环境HA简单部署

背景随着项目的功能越来越复杂,各种各样的配置也越来越多,渐渐的开始面临以下问题:各种配置到处都是,没有集中管理。配置的存放方式也多种多样,如程序内部hard code、配置文件中、数据库中等等。同一种配置,各处不统一。配置修改后不能实时生效。配置的修改没有完善的审核机制,想改就改等,出问题很难追溯。基于此,就需要有一个完善的配置中心。Apollo便应用而生。...

2019-03-03 01:20:00 3063 1

原创 Apache Ranger基于Apache Atlas标签的策略

Ranger-Atlas集成将Atlas的数据分类(Tag)与Ranger中的安全策略相结合,可以实现基于分类的、跨组件的权限控制,而无需在每个组件中创建单独的服务和策略。Ranger配置Tagsync配置Ranger Tagsync从Atlas中同步Tag。可通过Ambari WebUI=&gt;Ranger配置,如图:Atlas添加Tag创建如下Tag给Tag PII添加如...

2019-03-01 07:56:05 5513 7

原创 Apache Ranger对Hive数据脱敏-行过滤Row Filter、列屏蔽Column Masking

概述Apache Ranger对Hive数据支持两种脱敏方式:行过滤Row Filter、列屏蔽Column Masking。它可对Select结果进行行列级别数据脱敏,从而达到对用户屏蔽敏感信息的目的。注意:该功能只适用于HiveServer2使用场景(如Beeline/JDBC/Hue等途径执行的Select),对Hive Cli(如Hive -e)和直接读取Hive表的HDFS文件场景不...

2019-02-26 07:20:54 5921

原创 Apache Ranger对HDFS、HBase、Hive、Yarn授权

概述与安装1. 简介Apache Ranger是集中式的权限管理框架,可以对HDFS、HBase、Hive、Yarn等组件提供细粒度的权限访问控制,并且提供WebUI和RestAPI方便进行操作。2. 功能A、集中认证(Authentication)、授权(Authorization)、审计(Audit)、加密(Encryption)、安全(Security)于一体,标准化各种Hadoop...

2019-02-24 22:12:55 5369 3

原创 Apache Atlas类型系统与Rest API

概述类型系统Type System是Atlas最核心的组件之一,用户可以通过类型系统对数据资产进行分类、定义,然后用Ingest/Export组件添加元数据或输出元数据变化。对外,其他系统可以通过REST API或Kafka Message与Atlas进行集成。这里,总结Atlas 类型系统与Rest API。Atlas 类型系统TypeType(类型)在Atlas中代表了一类数据,如h...

2019-02-23 14:21:08 6977 6

原创 Apache Atlas管理Hive元数据

部署好Atlas服务后,重点是对Atlas的使用,这里对Atlas管理Hive元数据做简单总结。Hive元数据导入全量导入/usr/hdp/2.6.4.0-91/atlas/hook-bin/import-hive.sh通过WebUI可以搜索到如下Hive数据库:通过WebUI可以搜索到如下Hive表:注意:dim_channel(维度表-渠道维),dim_date(维度表-日期...

2019-02-17 20:41:49 10271 28

原创 Apache Atlas HA部署

概述Apache Atlas是开源的元数据治理框架,可以为Hive、HBase、Kafka等提供元数据管理功能,如:数据分类查看和更新Lineage元数据搜索与Apache Ranger集成控制权限注意:为便于安装配置,以及后续的管理维护,建议用HDP Ambari等工具来部署Atlas。这里用HDP-2.6.4 Ambari部署Atlas 0.8.0元数据治理服务。架构注意...

2019-02-16 23:16:49 2220

原创 Spark Streaming Join

多数据源Join思路多数据源Join大致有以下三种思路:数据源端Join,如Android/IOS客户端在上报用户行为数据时就获取并带上用户基础信息。计算引擎上Join,如用Spark Streaming、Flink做Join。结果端Join,如用HBase/ES做Join,Join键做Rowkey/_id,各字段分别写入列簇、列或field。三种思路各有优劣,使用时注意...

2018-11-10 07:26:07 5125 5

原创 在 Spark DataFrame 中使用Time Window

从Spark 2.0.0开始,Spark Sql包内置和Spark Streaming类似的Time Window,方便我们通过时间来理解数据。Spark Sql包中的Window APITumbling Windowwindow(timeColumn: Column, windowDuration: String): ColumnSlide Windowwindow(timeColu...

2018-11-08 08:37:46 3038 1

原创 Spark SQL 与 Spark DataFrame 自定义UDF、UDAF

UDF、UDAF、UDTFUDF:用户自定义函数(User Defined Function)。一行输入一行输出。UDAF: 用户自定义聚合函数(User Defined Aggregate Function)。多行输入一行输出。UDTF: 用户自定义表函数(User Defined Table Generating Function)。一行输入多行输出。如hive/spark中的expl...

2018-11-08 07:15:50 3834

原创 Spark RDD 按Key保存到不同文件

基本需求将Keyed RDD[(Key,Value)]按Key保存到不同文件。测试数据数据格式:id,studentId,language,math,english,classId,departmentId1,111,68,69,90,Class1,Economy2,112,73,80,96,Class1,Economy3,113,90,74,75,Class1,Economy4...

2018-11-02 08:01:41 4817 4

原创 Spark DataFrame 多行转多列

在Spark DataFrame中可以用Pivot函数将多行转成多列。样本数据每个用户对每部电影的评分。数据格式:userID 用户ID,movieID 电影ID,rating评分15,399,215,1401,515,1608,415,20,418,100,318,1401,318,399,1Spark DataFrame 多行转多列package com.bigDa...

2018-10-24 07:13:15 5655

原创 Spark 共享变量:广播变量、累加器

通常,如下操作rdd.transformation(func),func所需要的外部变量都会以副本的形式从Driver端被发送到每个Executor的每个Task,当Task数目有成百上千个时,这种方式就非常低效;同时每个Task中变量的更新是在本地,也不会被传回Driver端。为此,Spark提供了两种类型的共享变量:广播变量、累加器。广播变量广播变量,Execoutor中的只读变量。在Dr...

2018-10-24 06:44:53 1284

原创 Elasticsearch MGet与Bulk

MGet(Multi Get)与Bulk 都是ES里的批量操作。可降低多次请求的网络开销,提升性能。MGet:一次请求查询多个文档。Bulk:一次请求执行多次index、create、update、delete操作。MGet注意:mget API 需要一个docs数组。数组的每一项包含_index、_type、_id。同一Index下,_index可以省略;同一Inde...

2018-09-02 22:14:11 1191

原创 Elasticsearch 自定义多个分析器

分析器(Analyzer)Elasticsearch 无论是内置分析器还是自定义分析器,都由三部分组成:字符过滤器(Character Filters)、分词器(Tokenizer)、词元过滤器(Token Filters)。分析器Analyzer工作流程:Input Text =&gt; Character Filters(如果有多个,按顺序应用) =&gt; Tokenizer =...

2018-09-02 15:35:08 4197

原创 Elasticsearch 聚合

总结Elasticsearch三种聚合 Metrics Aggregations、Bucket Aggregations、Pipeline Aggregations中的常用聚合。Metrics Aggregations 度量聚合如Count、Sum、Min、Max、Avg、Count(Distinct)就是度量。Bucket Aggregations 分桶聚合如 Group...

2018-09-01 17:21:04 2148

原创 Elasticsearch 搜索

搜索有两种方式:URL参数搜索、URL请求体搜索。在URL请求体搜索中可以使用Query DSL (Domain Specific Language)。测试数据下载测试数据wget -O accounts.json https://github.com/elastic/elasticsearch/blob/master/docs/src/test/resources/acc...

2018-09-01 16:34:35 305

原创 Elasticsearch 索引、映射、文档

索引索引(index)就像是传统关系数据库中的数据库。创建索引创建索引时可以通过设置number_of_shards和number_of_replicas来指定主分片和每个主分片对应副本分片的数量。注意:主分片数一旦设置,后期不能修改。PUT user_info{ "settings": { "number_of_shards": 3, "numb...

2018-09-01 16:17:45 2197

原创 Elasticsearch Cat 命令

总结Elasticsearch Cat 命令。Cat 命令公共参数Help 查看帮助GET _cat/master?helpid | | node id host | h | host name ip | | ip address node | n | node name Verbose 显示列名GET _cat/mas...

2018-09-01 16:09:57 14383 3

原创 Elasticsearch核心概念

Elasticsearch是一个基于Lucene开发的、高性能、可扩展、开源的全文检索和分析引擎。本文基于Elasticsearch 6.2总结。集群(cluster)集群由一个或多个节点组成。一个集群有一个默认名称”Elasticsearch”。注意:不同集群,集群名称应唯一。节点(node)节点是集群的一部分。ES 6.x中,有多种类型的节点:Master...

2018-09-01 14:59:52 793

原创 数据收集之Fluentd

Fluentd是一个完全免费且开源的日志收集系统,性能敏感的部分用C语言编写,插件部分用Ruby编写,500多种插件,只需很少的系统资源即可轻松实现”Log Everything”。一般叫Fluentd为td-agent。Fluentd与td-agent关系:td-agent是Fluentd的稳定发行包。Fluentd与Flume关系:是两个类似工具,都可用于数据采集。Fluentd的In...

2018-08-19 20:31:05 11770 1

原创 数据收集之Filebeat

Filebeat采用Go语言开发,也可用于日志收集,相较于的Logstash,更轻量,资源占用更少。一般部署在日志收集的最前端。本文基于Filebeat 6.3.2总结。设计要点主要组件Filebeat主要由两大组件组成:Harvester、Input。Output实际上是Beats公共库libbeat一部分。Harvester每个文件启动一个Harvester,即...

2018-08-19 17:38:35 4768

原创 数据收集之Flume

Flume最初由Cloudera开发,于2011年6月贡献给Apache,于2012成为顶级项目。在孵化这一年,基于老版本的Flume(Flume OG:Flume Original Generation 即Flume 0.9.x版本)进行重构,摒弃了Zookeeper和Master,升级为现在的轻量级的Flume(Flume NG:Flume Next Generation,即Flume 1.x...

2018-08-19 17:28:11 1125

原创 数据收集之Logstash

LogstashLogstash由Java+Ruby语言编写,是一个开源的日志收集、处理、转发工具。Logstash主要由三大组件组成:Input 输入、Filter过滤、Output 输出。输入产生事件,过滤器修改事件,输出将事件发送到其他地方。 注:经常看到的编解码器codec也是过滤器,可以作为输入或输出的一部分。简单部署#下载解压[wangpei@l...

2018-08-12 22:50:55 2586

原创 数据收集之DataX

DataXDataX是阿里开源的离线数据同步工具,可以实现包括 MySQL、Oracle、MongoDB、Hive、HDFS、HBase、Elasticsearch等各种异构数据源之间的高效同步。DataX原理设计理念 为了解决异构数据源同步问题,DataX将复杂的网状同步链路变成星型链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,...

2018-08-11 17:29:59 4476

原创 数据收集之binlog同步----Maxwell

简介Maxwell是由Java语言编写,Zendesk开源的binlog解析同步工具。可通过简单配置,将binlog解析并以json的格式同步到如file,kafka,redis,RabbitMQ等系统中。也可自定义输出。相比Canal,Maxwell相当于Canal Server+Canal Client。安装配置MySQLMySQL 开启Binlog#开启...

2018-08-10 07:35:24 5579 1

原创 数据收集之binlog同步---Canal

Canal是阿里开源的binlog同步工具。可以解析binlog,并将解析后的数据同步到任何目标存储中。Canal工作原理 1、mysql master节点将改变记录保存到二进制binlog文件中。 2、canal 把自己伪装成mysql slave节点,向master节点发送dump binlog请求。master节点收到请求并找到对应binlog文件及bin...

2018-08-10 07:33:56 11100

Spark机器学习PDF带目录

Spark机器学习PDF带目录

2017-04-01

Hive编程指南PDF

Hive编程指南PDF

2017-04-01

Java数据结构和算法PDF

Java数据结构和算法PDF带目录

2017-04-01

机器学习PDF带目录

机器学习PDF带目录

2017-04-01

推荐系统实践PDF带目录

推荐系统实践PDF带目录

2017-04-01

Java数据结构和算法PDF带目录

2017-04-01

深入Java虚拟机pdf

深入Java虚拟机pdf

2017-03-31

spark快速大数据分析pdf

spark快速大数据分析pdf

2017-03-29

HADOOP实战中文清晰版pdf带目录

HADOOP实战中文清晰版pdf带目录

2017-03-29

微博情感分析200万条

微博情感200万条

2017-03-17

Apache POI EXCEL(XLSX)转成JSON maven依赖

Apache POI EXCEL(XLSX)转成JSON maven依赖

2017-03-10

python 核心技术与应用--孙立爽pdf

python 核心技术与应用--孙立爽pdf

2017-03-02

阿里巴巴 Java 开发手册.pdf

阿里巴巴 Java 开发手册.pdf

2017-03-02

常用数据挖掘算法总结及Python实现

常用数据挖掘算法总结及Python实现

2017-03-02

数据科学实战_完整版_带目录pdf

数据科学实战_完整版_带目录pdf

2017-03-02

数学之美-吴军pdf

数学之美-吴军pdf

2017-03-02

统计自然语言处理基础(中文版 带书签)

统计自然语言处理基础(中文版 带书签)

2017-03-02

中文文本分类语料(复旦)-训练集

共50.38MB。本语料库由复旦大学李荣陆提供。test_corpus.rar为测试语料,共9833篇文档;train_corpus.rar为训练语料,共9804篇文档,两个预料各分为20个相同类别。训练语料和测试语料基本按照1:1的比例来划分。使用时尽量注明来源(复旦大学计算机信息与技术系国际数据库中心自然语言处理小组)。

2017-03-02

DbVisualizer9.5.5 64位破解补丁.rar

DbVisualizer是一个完全基于JDBC的跨平台数据库管理工具。

2017-03-01

Docker从入门到实践

Docker从入门到实践

2017-02-28

jieba分词支持关键词带空格和特殊字符

jieba分词支持关键词带空格和特殊字符

2017-02-21

线性代数教材(同济大学第四版).pdf

线性代数教材(同济大学第四版).pdf

2016-11-27

Hadoop实战中文版pdf

Hadoop实战中文版pdf

2016-11-27

机器学习实战pdf

机器学习实战pdf

2016-11-27

Python数据挖掘入门与实践.pdf

Python数据挖掘入门与实践.pdf

2016-11-27

R语言实战pdf

R语言实战pdf

2016-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除