SparkSQL项目

YARN产生背景

MapReduce1.X的问题:

JobTracker的压力太大了;

YARN的产生

YARN的架构

1个RM(ResourceManager)+N个(NodeManager)

ResourceManager的职责:一个集群的active状态的RM只有一个,负责整个集群的资源管理和调度;

1.处理客户端的请求(启动/杀死)任务;

2.启动/监控ApplicationMaster(一个作业对应一个AM);

3.监控NM;

4.系统的资源分配和调度;

 

NodeManager:整个集群中有N个,负责单个节点的资源管理和使用,以及task的运行情况;

1.定期向RM汇报本节点的资源使用请求和各个Container的运行状态;

2.接收并处理RM的Container启动的各种命令;

3.单个节点的资源管理和任务管理;

 

ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理;

1.数据切分;

2.为应用程序向RM申请资源(container),并分配给内部任务;

3.与NM通信以启停task,task时运行在container中的;

4.task的监控和容错;

 

Container:

对任务运行情况的描述:CPU、Memory、环境变量

 

YARN的执行流程

1.用户向YARN提交作业;

2.RM为该作业分配第一个container(AM);

3.RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM;

4.AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况;

5.AM采用轮询的方式通过RPC协议向RM申请和领取资源;

6.AM申请到资源以后,便和相应的NM通信,要求NM启动任务;

7.NM启动我们作业对应的task;

验证是否成功:有两个进程ResourceManager,NodeManager

 

大数据仓库Hive

Hive产生背景:

MapReduce编程的不便性;

HDFS上的文件缺少Schema;

Hive体系结构

客户端:Command-line shell、Thrift/JDBC

Hive部署架构--测试环境

Hive部署架构--生产环境

MySQL主、备:保证hive元数据的正确

为什么要使用Hive

Hive在Hadoop生态中的位置

Hive环境搭建

配置hive.xml文件

4)拷贝MySQL驱动到hive/lib

5)启动Hive

hive/bin/hive

 

Hive基本操作

创建表

查看表的元数据

加载数据到hive表

编写HSQL

 

例子:

创建表

加载数据

求每个部门的人数

 

Spark大数据处理框架

Hadoop生态系统

Spark生态系统

Spark与hadoop生态圈对比

Spark与hadoop比较

Spark与MapReduce对比

 

Spark项目实战

安装Spark

配置环境变量

验证Spark

spark-shell  --master  local[2]

 

Standalone模式

启动

spark-shell  --master  spark://hadoop001:7077

 

SparkSQL 概述

1.SQL on hadoop常用框架

2.SparkSQL架构

 

SparkSQL使用

1.SQLContext/HiveContext/SparkSession的使用

1.SQLContext

SparkSQL处理步骤:

    //1)创建相应的Context
    val sparkConf = new SparkConf()

    //在测试或者生产中,AppName和Master我们是通过脚本进行指定
    //sparkConf.setAppName("SQLContextApp").setMaster("local[2]")

    val sc = new SparkContext(sparkConf)
    val sqlContext = new SQLContext(sc)

    //2)相关的处理: json
    val people = sqlContext.read.format("json").load(path)
    people.printSchema()
    people.show()

    //3)关闭资源
    sc.stop()

提交SparkSQL任务到集群

2.HiveContext

//1)创建相应的Context
val sparkConf = new SparkConf()

//在测试或者生产中,AppName和Master我们是通过脚本进行指定
//sparkConf.setAppName("HiveContextApp").setMaster("local[2]")

val sc = new SparkContext(sparkConf)
val hiveContext = new HiveContext(sc)

//2)相关的处理:读取hive中的表
hiveContext.table("emp").show

//3)关闭资源
sc.stop()

3.SparkSession

 val spark = SparkSession.builder().appName("SparkSessionApp")
      .master("local[2]").getOrCreate()

 val people = spark.read.json("file:///Users/rocky/data/people.json")
 people.show()

 spark.stop()

 

spark-shell&spark-sql的使用

1.使用spark-shell

./spark-shell --master local[2]

spark访问hive需要把hive-site.xml拷贝到spark/conf/目录下;

需要MySQL的驱动包:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值