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的驱动包: