立即注册 登录
About云-梭伦科技 返回首页

javaanddonet的个人空间 https://www.aboutyun.com/?71569 [收藏] [复制] [分享] [RSS]

日志

面试题

已有 904 次阅读2018-4-20 13:53 |个人分类:面试题| 面试题

搜集了一些面试题,这里汇总下。
1.简述对大数据组件:Yarn,Spark,Hbase,Hive的理解
Yarn是一个资源管理调度框架,主要有Resource Manager和Node Manager组成。其中Resource Manager负责整个集群中资源的统一的关联与调度,Node Manager负责各个节点的资源管理。Yarn的资源调度过程如下:
1. Client向Resource Manager(这里简写为RM)提交应用程序。
2. RM收到请求后,会在集群环境中找一个节点,在该节点上面启动该应用程序的第一个Container,用于启动Application Master(这里简写为AM)进程。
3. AM启动后,会向RM注册,并且向RM申请运行应用程序所需要的资源。申请成功后,AM或与各个Node Manager(这里简写为NM)通讯,要求NM启动自己申请的资源,NM会启动一些Container。
4. 启动的的Container会向AM汇报自己的运行状态和结果。
5. AM和Client通讯,从而Client可以了解整个应用程序运行的状态和结果。
6. 程序运行结束后,AM会想RM注销自己,释放所申请的资源。
Spark是一个基于内存的分布式计算框架,它和hadoop的mapreduce类似,只不过它是基于内存运行的,而MR会将中间结果落到磁盘中,增加了I/O的开销,相比之下,spark的运行速度比MR要块很多。但是spark它没有提供分布式的存储,所以一般情况下,Spark会结合hadoop的HDFS分布式文件存储系统一起使用。spark的分布式内存计算有一个比较高级的抽象对象,那就是RDD弹性分布式数据集。
怎么理解这个RDD呢?首先是弹性的,这个弹性体现在哪里呢?主要体现以下几点:
1. 数据在计算的过程中,可以自动的在内存和磁盘中进行转换。
2. 当某一步任务计算失败之后,它可以进行指定次数的重试。
3. 基于lineage的高效容错,当第n步运行出错,可以从第n-1步进行恢复。
分布式的体现在哪里呢?主要是在集群环境中随着节点数的增加,可以实现横向的无限扩展。
Spark应用的运行过程大致如下:
1. 根据RDD构建DAG有向无环图。
2. 将DAG有向无环图,根据宽窄依赖,job运行效率等因素,由DAG Schedule拆分为多个stage阶段,每一个stage阶段里包含多个taskset,每一个taskset又包含多个task。
3. 将Taskset提交给task schedule,task schedule通过cluster manager将taskset拆分为一个个单独的task。然后将task交个各个woker节点中的executor。
4. Worker节点中的executor执行每一个task。
Spark应用提交运行的模式有以下4中:local模式,standalone模式,spark on yarn,spark on mesos.
其中的standalone模式,是使用spark自带的集群资源管理。它是一种master-salve主从架构。一个master节点,多个worker节点。并且使用zookeeper来维护一个standby master备份节点来实现Spark的HA。
spark on yarn又可以分为以下两种方式:
1.spark on yarn - client: spark应用的driver program程序运行在client端,这表示整个spark应用程序在运行的过程中,client段不能离开。需要一直在线,clinet端的driver program程序需要和container进行沟通分配并监督任务的运行情况和结果。此时yarn集群环境中的application master只负责资源的申请。
2.spark on yarn - cluster: spark应用程序的driver program程序运行在yarn集群环境中的某一个node manager节点的application master中。application master负责调度整个应用的运行。client此时可以退出端口连接。但是这种模式下,不适合运行交换性的spark应用。




路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条