数据处理

spark streaming读kafka写elasticsearch(真实生产环境)

感情迁移 提交于 2020-03-11 10:12:00
spark streaming作为当下依然火热的流计算引擎,对于kafka和elasticsearch都有很好的api支持,以下是笔者在实际生产环境中的一个数据从kafka到es案例。 首先说一下几个重点: kafka消费offset使用mysql保存 ,一开始使用了 ScalikeJDBC 这个包来实现对数据库的访问,后来感觉用起来不太灵活,所以就写了原生的mysql JDBC工具类,也有不少好处,比如事务控制更加灵活,不再需要导入ScalikeJDBC的那好几个jar包 数据库获取offset后,会与kafka最早的offset做一个校验 ,因为机器资源紧张,kafka里数据只保存一天,如果spark streaming任务因为故障或是其他原因停了一段时间,这时再开启任务从mysql获取的offset有可能会超出kafka里offset的范围,这时就要把当前的offset进行替换。如果对数据处理速度有要求的话这一步可以注释掉,等需要的时候再开启。 第一步 Maven配置 这里相关工具的版本: scala:2.11.8 spark:2.3.4 kafka:0.10.1.0 elasticsearch:7.0.0 maven配置如下: < properties > < scala.version > 2.11.8 </ scala.version > < spark.version

大数据相关认识,大数据、物联网和云计算之间的关系,hadoop简介

孤人 提交于 2020-03-10 06:52:50
大数据相关认识 说道大数据,谷咕咕就很烦了,因为大学期间,做过爬虫,数据抓取,安装过Hadoop和hive,但是都不知道干嘛的,起码爬虫还知道,通过正则表达式将网页中的有效信息爬取下来。但是Hadoop和Hive一直是在Ubuntu上安装,不同什么意思,以至于后来看到,别人说Hadoop和Hive的时候就很尴尬,装过竟然不知道什么用。 所今天就稍微的记录一下。 大数据的特点 在网上常常听到4v,说的就是大数据的特点四个英文单词的首字母。 Volume(数据量大) Velocity(数据速度快) Variety(数据类型繁多) Value(数据价值密度低) 之前看文章时候5v的,他多了一个Veracity(真实性) 大数据的关键技术 数据采集: 利用轻量级的数据库手法客户端的数据,进行初步的查询和处理。 问题:是高并发。 工具:MySQL、Oracle 数据分析: 将数据快速导入到一个集中的分布式数据库或者,分布式存储集群,利用分布式技术存储大量数据,进行查询和分类汇总。 问题:导入数据量大,查询数据量大,查询请求多。 工具:Hadoop、hive 数据挖掘: 基于前面的数据进行数据挖掘、来满足高级别的数据分析需求。 问题:算法复杂,并涉及的数据量和计算量都大。 工具:R、Hadoop mahout Hadoop Hadoop是分布式批量处理系统,对大型数据集进行扫描,以产生其结果。

Hadoop架构之1.0

孤街醉人 提交于 2020-03-09 16:10:59
Hadoop架构之1.0 本文主要讲述Hadoop中HDFS的架构,详细的MapReduce将放到后面写一篇专门的博客 文章目录 Hadoop架构之1.0 hadoop1.0架构 HDFS组件 HDFS存储过程 写入操作 读取过程 HDFS的不足 MapReduce架构 MapReduce组件 MapReduce数据处理过程 MapReduce不足 hadoop1.0架构 HDFS组件 NameNode 管理整个文件系统的目录树结构和元数据信息 保管文件与Block块序列之间的对应关系,以及Block块与DataNode节点之间对应关系 Block副本及其存储位置等管理数据 DataNode状态监控 两者通过段时间间隔的心跳来传递管理信息和数据信息,通过这种方式的信息传递,NameNode 可以获知每个 DataNode 保存的 Block 信息、DataNode 的健康状况、命令 DataNode 启动停止等(如果发现某个 DataNode 节点故障,NameNode 会将其负责的 block 在其他 DataNode 上进行备份) 负责接受用户的操作请求 元数据管理操作: **fsimage:**内存命名空间元数据在外存的镜像文件 **editlog:**各种元数据操作的write-ahead-log文件,在体现到内存数据变化前首先会将操作记入editlog中,以防数据丢失。

spark的性能优化

倾然丶 夕夏残阳落幕 提交于 2020-03-09 13:13:05
spark性能优化点 一、分配更多的资源 它是性能优化调优的王道,就是增加和分配更多的资源,这对于性能和速度上的提升是显而易见的, 基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,进行性能调 优的时候,首先第一步,就是要来调节优的资源配置;在这个基础之上,如果说你的spark作业,能够分配的资源达到 了你的能力范围的顶端之后,无法再分配更多的资源了,公司资源有限;那么才是考虑去做后面的这些性能调优的点。 1、分配哪些资源 executor-memory、executor-cores、driver-memory 2、在哪里设置 在实际的生产环境中,提交spark任务时,使用spark‐submit shell脚本,在里面调整对应的参数。 提交任务的脚本: spark‐submit \ ‐‐master spark://node1:7077 \ ‐‐class cn.itcast.WordCount \ ‐‐num‐executors 3 \ 配置executor的数量 ‐‐driver‐memory 1g \ 配置driver的内存(影响不大) ‐‐executor‐memory 1g \ 配置每一个executor的内存大小 ‐‐executor‐cores 3 \ 配置每一个executor的cpu个数 /export/servers

数据处理—缺失值处理

我是研究僧i 提交于 2020-03-09 10:03:34
数据处理—缺失值处理 数据缺失主要包括记录缺失和字段信息缺失等情况,其对数据分析会有较大影响,导致结果不确定性更加显著 缺失值的处理:删除记录 / 数据插补 / 不处理 1,删除记录 判断是否有缺失值 数据 - isnull,notnull isnull:缺失值为True,非缺失值为False notnull:缺失值为False,非缺失值为True import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom scipy import stats% matplotlib inline​s = pd.Series([12,33,45,23,np.nan,np.nan,66,54,np.nan,99])df = pd.DataFrame({'value1':[12,33,45,23,np.nan,np.nan,66,54,np.nan,99,190], 'value2':['a','b','c','d','e',np.nan,np.nan,'f','g',np.nan,'g']})​# 创建数据​print(s.isnull()) # Series直接判断是否是缺失值,返回一个Seriesprint(df.notnull()) # Dataframe直接判断是否是缺失值,返回一个Seriesprint

Spark的累加器和广播变量

佐手、 提交于 2020-03-09 08:17:39
累加器 累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果想实现所有分片处理时更新共享变量的功能,那么累加器可以实现想要的效果。 系统累加器 针对一个输入的文件,如果我们想计算文件中所有空行的数量,编写以下程序: scala > val notice = sc . textFile ( "/hyk/spark/words.txt" ) notice : org . apache . spark . rdd . RDD [ String ] = / hyk / spark / words . txt MapPartitionsRDD [ 1 ] at textFile at < console > : 24 scala > val blanklines = sc . longAccumulator ( "MyAccumulator" ) blanklines : org . apache . spark . util . LongAccumulator = LongAccumulator ( id : 0 , name : Some ( MyAccumulator ) ,

iOS学习37数据处理之CoreData

自古美人都是妖i 提交于 2020-03-09 07:56:47
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系。 这些操作都需要使用SQL语句去实现,感觉操作很直接。如果先前有一点数据库和SQL基础的话,写起来会感觉很亲切,都是一些数据库操作的语句。但是当操作变多之后,语句越来越多,就很烦,代码比较多,看起来也会混乱一些。 如果想要详细了解,可以看 iOS学习36数据处理之SQLite数据库 2. CoreData数据库 CoreData.framework :iOS中提供了对原始SQLite数据库API访问的封装,通过这个framework来管理数据缓存和持久数据要比使用SQL语句操作SQLite数据库简单和方便许多。 机制:通过framework来存储和查询数据只需要使用framework提供的类就可以,你可以完全使用对象的形式来管理你的数据以及数据之间的关系,framework已经很好地将数据库表和字段封装成了对象和属性,表之间的一对多、多对多关系则封装成了对象之间的包含关系. 通过 relationship 来表示:   一对多时:设置为 properties 项选中 Optional, Plural 选项 To-Many Relationship 选中;   多对一反向关系时

hadoop(hadoop是什么)

别来无恙 提交于 2020-03-08 14:30:20
Hadoop是什么 Hadoop是Apache基金会开发的分布式系统基础架构 Hadoop主要被用来解决海量数据的 存储 和海量数据的 分析计算 广义上来说,Hadoop通常是指一个更广泛的概念----Hadoop生态圈 Hadoop发展历史 Lucene框架是Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎。 2001年年底Lucene成为Apache基金会的一个子项目。 对于海量数据的场景,Lucene面对与Google同样的困难, 存储数据困难 , 检索速度慢 。 学习和模仿Google解决这些问题的办法 :微型版Nutch。 可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文) GFS ----> HDFS Map-Reduce ----> MR BigTable ----> HBase 2003-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用了 2年业余时间 实现了DFS和MapReduce机制,使Nutch性能飙升。 2005 年Hadoop 作为 Lucene的子项目 Nutch的一部分正式引入Apache基金会。 2006 年 3 月份,Map-Reduce和Nutch

Spark Core概述

﹥>﹥吖頭↗ 提交于 2020-03-08 06:42:46
Spark Core是spark的核心与基础,实现了Spark的基本功能,包含任务调度,内存管理,错误恢复与存储系统交互等模块 Spark Core中包含了对Spark核心API——RDD API(弹性分布式数据集)的定义:RDD表示分布在多个计算节点上可以并行操作的元素集合,是spark的核心抽象 Spark Core提供Spark最基础与最核心的功能,主要包括以下功能: (1)SparkContext: 通常而言,Driver Application的执行与输出都是通过SparkContext来完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、Web服务等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。SparkContext内置的DAGScheduler负责创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等功能。内置的TaskScheduler负责资源的申请,任务的提交及请求集群对任务的调度等工作。 (2)存储体系: Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘IO,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景

Spark常见问题汇总

*爱你&永不变心* 提交于 2020-03-07 17:41:41
原文地址:https://my.oschina.net/tearsky/blog/629201 摘要:    1 、 Operation category READ is not supported in state standby    2 、配置 spark.deploy.recoveryMode 选项为 ZOOKEEPER    3 、多 Master 如何配置    4 、 No Space Left on the device ( Shuffle 临时文件过多)    5 、 java.lang.OutOfMemory, unable to create new native thread    6 、 Worker 节点中的 work 目录占用许多磁盘空间    7 、 spark-shell 提交 Spark Application 如何解决依赖库    8 、Spark在发布应用的时候,出现连接不上master问题    9 、开发spark应用程序(和Flume-NG结合时)发布应用时可能出现org.jboss.netty.channel.ChannelException: Failed to bind to: /192.168.10.156:18800    10 、 spark-shell 找不到hadoop so问题解决    11 、ERROR XSDB6