MapReduce中Shuffle中的机制

[TOC]

官方的shuffle流程

shuffle原理

提到MapReduce,就不得不提一下shuffle。

MapReduce 框架的核心步骤主要分两部分:Map 和Reduce,一个是独立并发,一个是汇聚。当你向MapReduce 框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map 任务,然后分配到不同的节点上去执行,每一个Map 任务处理输入数据中的一部分,当Map 任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce 任务的输入数据。Reduce 任务的主要目标就是把前面若干个Map 的输出汇总到一起并输出。

查看更多

评论

SparkSQL介绍

[TOC]

Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!

查看更多

评论

Spark-On-Yarn模式

[TOC]

SparkOnYarn

两种模式区别

cluster模式:

Driver程序在YARN中运行,应用的运行结果不能在客户端显示,所以最好运行那些将结果最终保存在外部存储介质(如HDFS、Redis、Mysql)而非stdout输出的应用程序,客户端的终端显示的仅是作为YARN的job的简单运行状况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
lib/spark-examples*.jar \
10

./bin/spark-submit --class cn.itcast.spark.day1.WordCount \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
/home/bigdata/hello-spark-1.0.jar \
hdfs://master:9000/wc hdfs://master:9000/out-yarn-1

查看更多

评论

SparkStreaming介绍

[TOC]

大数据领域,分为离线计算和实时计算

查看更多

评论

SparkRDD介绍

[TOC]

1
sc.textfile("hdfs://master:9000/wc").flatMap(_.split("分隔符")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://master:9000/wcResult")

查看更多

评论

Hadoop零碎知识点

[TOC]

查看元数据信息

可以通过hdfs的一个工具来查看edits中的信息

1
2
bin/hdfs oev -i edits -o edits.xml
bin/hdfs oiv -i fsimage_0000000000000000087 -p XML -o fsimage.xml

查看更多

评论

HDFS元数据备份流程-Namenode与SeceondaryNamenode之间的关系

hdfs元数据管理

namenode对数据的管理采用了三种存储形式:

  • 内存元数据(NameSystem)

  • 磁盘元数据镜像文件fsimage
    fsimage保存着文件的名字、id、分块信息、大小等,但是不保存datanode名称对应的ip

  • 数据操作日志文件edits(可通过日志运算出元数据)

    查看更多

评论

Hdfs结构性能分析及读写流程

[TOC]

hdfs的设计思想

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析
首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;

查看更多

评论

Spark启动流程及一些小总结

[TOC]

spark的架构模型

角色功能

Driver:以spark-submit提交程序为例,执行该命令的主机为driver(在任意一台安装了spark(spark submit)的机器上启动一个任务的客户端也就是Driver 。客户端与集群需要建立链接,建立的这个链接对象叫做sparkContext,只有这个对象创建成功才标志这这个客户端与spark集群链接成功。SparkContext是driver进程中的一个对象,提交任务的时候,指定了每台机器需要多少个核cores,需要的内存 )

Master: 给任务提供资源,分配资源,master跟worker通信,报活和更新资源

Worker: 以子进程的方式启动executor

Executor:Driver提交程序到executor(CoarseGrainedExecutorBankend),执行任务的进程,exector是task运行的容器

查看更多

评论

SparkStreaming消费Kafka数据

[TOC]

Streaming消费Kafka有两种方式

1、reciver方式

根据时间来划分批次,缺点:有可能一个时间段会出现数据爆炸,有保存log到hdfs机制,但消耗大(zk来管理偏移量)

2、direct方式 1.3.6后推出

executor和kafka的partition是一一对应的(是rdd的分区和kafka对应,如果一个executor的rdd有多个分区,那么一个executor可以对应多个partition)必须自己来管理偏移量,最好把偏移量写在zk或者其他第三方介质里面

查看更多

评论