大数据-Spark
心雨先生
做一条有理想的咸鱼
展开
-
10.1 spark core — spark内核
spark是开源的分布式计算框架(源码是scala编写的) http://spark.apache.org/计算速度加快编写加快hadoop:在hdfs读取-->计算结果存到hdfs-->二次计算依然在hdfs上读取-->输出spark:在hdfs上读取-->计算结果存在内存中-->二次计算在内存中读取-->输出结果可以保存到hdfs上spa...原创 2018-07-18 09:16:37 · 217 阅读 · 0 评论 -
12.4 Mahout与聚类
聚类(k-means):给事物打标签,寻找同一组内的个体之间的一些潜在的 相似模式。力图找到数据的自然分组聚类是一种无监督的机器学习任务它可以自动将数据划分成 类cluster。因此聚类分组不需要提前被告知所划分的组应该 是什么样的。因为我们甚至可能都不知道我们再寻找什么,所 以聚类是用于知识发现而不是预测聚类原则是一个组内的记录彼此必须非常相似,而与该组之外 的记录截然不同。所有聚类做的...原创 2018-08-27 08:42:00 · 258 阅读 · 0 评论 -
12.1 SparkStreaming,WordCount
Storm和SparkStreaming:1,Storm纯实时的流式处理框架(来一条数据立马进行处理),吞吐量不高2,SparkStreaming是一个批处理,吞吐量高3,Storm的事物的机制要比SparkStreaming完善事物机制是指:接受或者拉取的每一条数据恰好被处理一次4,SparkStreaming适合做复杂数据处理,Storm只适合做比较简单的汇总型计算Sp...原创 2018-08-20 09:56:50 · 311 阅读 · 0 评论 -
12.5 地图实时路况数据分析
运行之前:启动zookeeper,kafka,redis注意jar兼容:代码:Traffic.zip地图实时路况:可以使用Java代码来当kafka生产者def main(args: Array[String]): Unit = { val topic = "car_events" val brokers = "node2:9092,node3:9092,n...原创 2018-08-28 08:15:37 · 1445 阅读 · 0 评论 -
12.2 kafka安装测试
Kafka是个什么东西?消息队列的特点?消息列队的特点:生产者消费者模式先进先出(FIFO)顺序保证可靠性保证自己不丢数据消费者不丢数据:“至少一次,严格一次”kafka的架构:producer:消息生产者consumer:消息消费者broker:kafka集群的server,构成集群的每个节点,负责处理消息读、写请求,存储消息topic:消息队列/分类...原创 2018-08-21 08:13:30 · 147 阅读 · 0 评论 -
13.2 Spark数据本地化
大数据计算的原则,数据不移动,计算移动 ----数据本地化Application的执行流程:job在执行之前,首先是由DAGScheduler负责切割Job,划分stage(依据宽窄依耐),DAGScheduler会以taskSet的形式发送TaskScheduler,TaskScheduler会根据数据本地化的算法,发送task到相Executor中执行如果发送到Executor中的...原创 2018-08-31 09:35:11 · 199 阅读 · 0 评论 -
12.6 地图实时路况预测
PredictLRwithLBFGS.scala: /**训练-逻辑回归 * Created by Administrator on 2018/8/24. */ object TrainLRwithLBFGS { val sparkConf = new SparkConf().setAppName("Beijing traffic"...原创 2018-08-29 09:12:05 · 667 阅读 · 0 评论 -
13.4 数据倾斜
数据倾斜七种解决方案:1、Hive预处理方案实现思路:此时可以评估一下,是否可以通过Hive来进行数据预处理(即通过Hive ETL预先对 数据按照key进行聚合,或者是预先和其他表进行join),然后在Spark作业中针对的数据源就不是 原来的Hive表了,而是预处理后的Hive表。此时由于数据已经预先进行过聚合或join操作了,那么 在Spark作业中也就不需要使用原先的shuffle...原创 2018-09-04 08:24:11 · 159 阅读 · 0 评论 -
13.1 Spark调优
Spark调优:1、调整资源情况(1)搭建集群的时候Spark-env.shSPARK_WORKER_CORESPARK_WORKER_MEMORYSPARK_WORKER_INSTANCES(2)提交任务的时候spark-submit --master <options>--executor-cores--executor-memory--...原创 2018-08-30 13:14:24 · 300 阅读 · 0 评论 -
14.1 Storm简介
http://storm.apache.org/releases/0.9.6/Guaranteeing-message-processing.htmlStorm是非常优秀的开源的分布式实时流式计算系统,满足了很多实时流式计算的需求纯的实时流式计算框架,一条一条来处理,所有延时可以做到很低,ms毫秒级别Storm架构:Nimbus 分配task任务,分配资源,主节点zookeep...原创 2018-09-05 09:10:18 · 217 阅读 · 0 评论 -
13.3 Spark调优-JVM调优,shuffle调优, Reduce OOM
JVM调优:Executor JVM堆内存 分为三块 静态资源划分(60%(RDD以及广播变量存储的位置)+20%(运行内存)+20%(reduce 聚合内存))*90%+10%(JVM自身预留) = JVM堆内存JVM的gc回收流程(属于运行内存中):在task中创建出来的对象首先往eden和survior1种存放,survior2是空闲的。当eden和survior1区域放...原创 2018-09-03 09:10:06 · 298 阅读 · 0 评论 -
14.2 Storm部署搭建
单机版:1,上传apache-storm-0.9.5.tar.gz (前提需要有java环境)2,解压 tar -zxvf apache-storm-0.9.5.tar.gz3,cd apache-storm-0.9.5 进入解压目录4,mkdir logs 在目录当中创建一个logs文件夹5,./bin/storm dev-zookeeper >> ./logs/...原创 2018-09-06 09:39:21 · 212 阅读 · 0 评论 -
14.6 Storm事物
Storm事务只有用事务的概念才能完成Exactly-once要保证事务,就要强有序!事务如果对应这批数据如果出错了,必须要重新计算正确才能去下面的事务,所以就得保证事务ID所对应的数据得是一样的!就得保证再次取得时候还能从数据源取到数据!Storm是单条处理,那这样的话 Design 1为了去做到事务的代价:每条Tuple对应一个Txid事务ID,为了去确...原创 2018-09-12 10:10:56 · 139 阅读 · 0 评论 -
14.4 Storm从kafka读取数据存储到redis里
package storm.starter.chenbo; import backtype.storm.Config;import backtype.storm.Constants;import backtype.storm.LocalCluster;import backtype.storm.StormSubmitter;import backtype.storm.tas...原创 2018-09-10 08:39:25 · 946 阅读 · 0 评论 -
14.3 Strom测试代码
StromTest :package com.yuntian.test; import backtype.storm.Config;import backtype.storm.LocalCluster;import backtype.storm.StormSubmitter;import backtype.storm.generated.AlreadyAliveExce...原创 2018-09-07 10:34:39 · 226 阅读 · 0 评论 -
14.7 DRPC
什么是DRPC: --是分布式远程调用– RPC(Remote Procedure Call Protocol)——远程过程调用协议– Distributed RPC:rpc请求流式、并进行处理– RPC请求参数当做输入流,结果当做输出流– 利用storm的分布式进行处理机制和能力– 借助DRPC server接收请求、返回相应Storm只能获取数据,不能接请求和发响应,所...原创 2018-09-13 10:21:47 · 460 阅读 · 0 评论 -
14.5 storm从kafka接收数据然后写入kafka
package storm.starter.chenbo; import backtype.storm.Config;import backtype.storm.LocalCluster;import backtype.storm.StormSubmitter;import backtype.storm.task.ShellBolt;import backtype.stor...原创 2018-09-11 09:17:43 · 1655 阅读 · 0 评论 -
12.3 kafka和Sparkstreaming
kafka每个7天(168小时),清理一次过期数据发布与订阅的分布式文件系统kafka+Sparkstreaming模式:1,Receiver2,Direct直接连接(将kafka看成类似HDFS)Receiver模式:1,web端把消息发送到kafka2,kafka定时推送消息到Excutor进程,这个Excutor就是Receiver task,Receiver 接...原创 2018-08-22 08:32:32 · 240 阅读 · 0 评论 -
11.8 spark SQL读取hive数据
1,启动hdfs集群2,启动hivecreate database testdb 创建testdb库关闭hive保留关键字检查功能:set hive.support.sql11.reserved.keywords=false创建一张userlog表:CREATE TABLE IF NOT EXISTS testdb.userlog(date string ,time...原创 2018-08-13 14:09:33 · 1643 阅读 · 0 评论 -
11.5 动态构造DataFrame的元数据-scala
val conf = new SparkConf() //创建sparkConf对象conf.setAppName("My First Spark App") //设置应用程序的名称,在程序运行的监控页面可以看到名称conf.setMaster("local")val sc = new SparkContext(conf)val sqlContext = new SQLContex...原创 2018-08-08 14:35:20 · 523 阅读 · 0 评论 -
10.5 spark on yarn
将spark的application运行在yarn上Application:一个应用程序,WordCountjob:是与action类的算子一一对应的stage:一组并行计算的task(pipeline)task:一个任务单元,ThreadMaster:资源管理的主节点Worker:资源管理的从节点Executor:真正计算的进程ThreadPool(Executo...原创 2018-07-24 08:48:02 · 242 阅读 · 0 评论 -
10.2 spark算子介绍
算子:转换算子:RDD进行内部转化,不消耗资源行动算子:执行job,消耗资源,要看到执行结果必须要行动算子控制算子 转换算子map 遍历的单位是每一条记录 , 返回值是一条记录flatMap 遍历的单位也是每一条记录,但是返回值可以是多条filter 过滤算子 true为保留 false 过滤掉mapPartitions 遍历的单位是每一个分区,每一个分区的数据...原创 2018-07-19 09:50:29 · 193 阅读 · 0 评论 -
10.6 Spark资源调度和任务调度-standalone模式
1,当每个worker启动起来之后,会向master注册信息(内容:当前worker进程所管理的资源情况);这样Master就掌握了整个集群的资源情况2,当new SparkConf 和SparkContext的时候Driver当中就启动了DAGScheduler和TaskScheduler;这时候TaskScheduler会向Master发送请求(内容:当前Application执...原创 2018-07-25 11:59:12 · 471 阅读 · 0 评论 -
10.3 spark算子例子map,filter,flatMap,mapPartitions,groupByKey,join,distinct
Map filter:object Map_Operator {def main(args: Array[String]): Unit = {/*** 创建一个设置Spark运行参数的对象* SparkConf对象可以设置运行模式,设置Application的名称* 设置Application执行所需要的资源情况*/val conf = new SparkConf(...原创 2018-07-20 08:15:19 · 452 阅读 · 0 评论 -
10.7 Spark广播变量和累加器
广播变量:广播变量是在Driver端定义的,在Executor端读取,在Executor端是不能修改的,这样线程就安全线程安全:单线程和多线程计算结果一致当定义了外部变量,这个外部变量就存在堆当中,当发送多个task的时候暂用了大量的资源,这时候用广播变量,每个Executor里面都有一个共享变量区,当执行task的时候首先去共享变量区去读取,这样就节省了大量资源 Driver...原创 2018-07-26 09:10:49 · 228 阅读 · 0 评论 -
10.9 spark高可用
yarn提交任务不存在高可用问题spark的高可用,实际上就是Master的高可用 1,先启动zookeeper2,修改spark的conf下spark-env.sh:加上 --注意配置好zookeer信息 ,修改完同步其他节点spark-env.shexport SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKE...原创 2018-07-30 14:01:20 · 674 阅读 · 0 评论 -
10.8 Spark资源调度源码分析
Work启动之后会向Master注册代码层面来说:注册过程就是往Master数据结构里面插入一条数据HashSet ,这时候Master里就会有 val workers = new HashSet()的代码1,客户端client执行spark-submit 任务命令,就会向Master请求资源,用来启动Driver进程,他会将当前Driver信息注册给Master;代码层面:就是...原创 2018-07-27 09:01:34 · 542 阅读 · 0 评论 -
10.4 spark集群搭建-standalone模式
Spark standalone集群搭建:1、上传解压 tar -zxvf spark-1.6.0-bin-hadoop2.6.tgz2、修改安装包的名称(最好保留版本号)mv spark-1.6.0-bin-hadoop2.6 spark-1.6.03、进入conf目录,修改slaves和Spark-env.shslaves(Worker进程所在的节点):node2nod...原创 2018-07-23 08:44:10 · 297 阅读 · 0 评论 -
10.10 spark-shuffle,寻址
HashShuffle普通机制:map task的计算结果,会根据分区器(default:HashPartitioner)来决定写入到哪一个磁盘小文件里面去reduce task会去Map端拉去相应的小文件产生磁盘小文件的个数公式:M(map task的个数)*R(reduce task的个数)磁盘小文件过多会有什么问题1,在shuffle wirte过程中会产生很多写的对...原创 2018-07-31 08:35:37 · 226 阅读 · 0 评论 -
11.6 hdfs读取json数据,转成DataFrame保存到hdfs
读取json或者parquet文件创建一个DataFrameDataFrame存储到某一个路径下,默认存储格式是parquetSaveMode.Overwrite:重写SparkConf conf = new SparkConf().setAppName("SaveModeTest").setMaster("local");JavaSparkContext sc = new...原创 2018-08-09 09:53:31 · 5028 阅读 · 0 评论 -
11.7 spark和hive整合
1、在Spark的安装包下的conf下创建一个文件 hive-site.xml<configuration><property><name>hive.metastore.uris</name><value>thrift://node2:9083</value></property>&原创 2018-08-10 08:21:05 · 255 阅读 · 0 评论 -
11.1 Spark Sql;jsonRDD转换成DataFrame
Hive是Shark的前身,Shark是SparkSQL的前身Shark是基于Spark计算框架之上且兼容Hive语法的SQL执行引擎,由 于底层的计算采用了Spark,性能比MapReduce的Hive普遍快2倍以上, 当数据全部load在内存的话,将快10倍以上,因此Shark可以作为交互式 查询应用服务来使用。除了基于Spark的特性外,Shark是完全兼容Hive的语法,表结构以 ...原创 2018-08-01 15:52:06 · 1614 阅读 · 0 评论 -
11.4 使用反射的方式将RDD转换成为DataFrame
1、自定义的类必须是public2、自定义的类必须是可序列化的3、RDD转成DataFrame的时候,他会根据自定义类中的字段名进行排序。SparkConf conf = new SparkConf().setMaster("local").setAppName("RDD2DataFrameByReflection");JavaSparkContext sc = new JavaS...原创 2018-08-06 09:54:49 · 345 阅读 · 0 评论 -
11.2 DataFrame操作,集合转换
SparkConf conf = new SparkConf().setAppName("DataFrameOps").setMaster("local");JavaSparkContext sc = new JavaSparkContext(conf);/*** 若想使用SparkSQL必须创建SQLContext 必须是传入SparkContext 不能是SparkConf*/...原创 2018-08-02 13:39:08 · 2012 阅读 · 0 评论 -
11.3 动态构造DataFrame的元数据
SparkConf conf = new SparkConf().setMaster("local").setAppName("RDD2DataFrameByReflection");JavaSparkContext sc = new JavaSparkContext(conf);SQLContext sqlcontext = new SQLContext(sc);/*** 在RD...原创 2018-08-03 08:39:57 · 611 阅读 · 0 评论 -
11.9 spark SQL读取MySQL数据
注意别忘记了驱动包:mysql-connector-java-5.1.6.jarpublic static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("JDBCDataSource").setMaster("local"); JavaSparkContext sc = new Jav...原创 2018-08-15 08:28:21 · 651 阅读 · 0 评论 -
spark写入mysql的几种方法,针对不同场景
方法一:各个字段都是提前定好的val prop = new java.util.Propertiesprop.setProperty("user", "root")prop.setProperty("password", "123456")df1.write.mode(SaveMode.Append).jdbc("jdbc:mysql://192.168.1.97:3306/xian...转载 2018-09-27 08:37:05 · 2206 阅读 · 0 评论