hadoop、hive、spark、hbase综述

hadoop综述


1    namenode
    一般在master节点上,用来存储文件和目录的所有元数据信息    
    常见面试问题:"namenode和datanode可以在同一个节点吗?"
    -- 原理上可以在一个节点,但是这样做有很多弊端,比如datanode是数据的实际执行节点,对资源的占用会影响namenode节点的性能;
2    datanode
    一般在slave节点上,用来存储实际数据    
3    secondary namenode
    namenode的副本节点,定期通过editlog合并namenode的变化。
    常见面试问题:namenode的主从节点,以什么形式合并变化?
    -- 通过editlog,即是编辑日志
4    jobtracker
    运行在namenode上,是负责提交和运行mapreduce job的守护程序,会向tasktracker分配任务
    一句话总结,即是jobtracker存在于namenode上,向tasktracker分配任务
    常见面试问题:jobtracker类似spark里面的什么?
    -- 类似driver,tasktracker类似spark里面的worker,spark也是driver向worker分配具体任务,然后任务执行在worker的executor上
5    tasktracker
    运行在datanode上,是具体的执行计算的节点    
6    resourcemanager
    yarn上负责资源分配和调度    
    常见面试问题:RM、NM 和 NN、DN比较
    -- RM和NM是针对yarn而言的资源分配和节点管理,NN和DN是相对于hadoop而言,不是一种体系的概念,不好一起比较;
7    nodemanager
    slave节点,顾名思义,是用来管理节点的,检测启动了应用程序的容器,向resourcemanager报告    
8    jobhistoryserver        
    维护有关的mapreduce工作中的应用终止后的信息    也即是MR应用终止后,应用终止后的信息会保存在jobhistoryserver中;
9    什么是主动和被动的namenodes    
    既是主备namenode的另一种叫法,namenodes的主动被动,既是主备的意思
10    hadoop集群可以删除或者添加节点嘛,怎么添加    
    这都是针对数据节点而言,数据节点崩溃可以删除或者新增    
    添加的方法参见hadoop官网
11    两个客户端尝试访问相同的HDFS文件,会发生什么    
    HDFS只支持独占写入,所以会接受一个拒绝一个    
    -- HDFS的独占写入特性,但可以并发的读
12    解释报错:文件只能被复制到0节点,而不是1    
    这是0节点没有任何可用的datanode    
    文件不能被复制到某节点的报错:一般说明某节点没有任何可用的datanode
13    hdfs关闭安全模式    
    hadoop dfsadmin -safemode        
    hdfs的系统操作命令,dfsadmin
14    如何定义hdfs的block    
    dfs.block.size    
    在HDFS-site.xml中    
    -- hdfs的block的作用:block是hdfs中最基本的存储单位
15    hadoop2默认block大小    
    128M        
16    rack awareness    
    既是副本放置策略    
    若值为3:
    -- 策略既是数据的每个块,两个副本在一个机架中,第三个副本存在于不同的机架;
    -- 副本放置策略:若副本为3,两个同机架,一个跨机架
17    为什么hadoop适用于大型数据集,而不是适用具有大量的小文件的应用程序?    
    因为namenode很昂贵,如果大量的小文件过多的消耗了namenode,肯定不如一个单独文件中有大量数据        
    namenode是存储文件和目录的所有元数据信息的节点,如果文件数量很多的话,那对namenode的消耗会很大,因为无论多小的文件都要对应一个元数据信息,多大的文件也要对应一个元数据信息;
18    speculative running    
    因为一个节点运行任务较慢,冗余另一个节点让两个节点同时执行同一任务,这两个程序先完成的被接受,后完成的被杀死    
    前面描述的这个过程称为:specculative running,即是投机执行,如果一个节点执行缓慢,会复制一个同样的节点来执行同一个任务,相同的被接受,不同的被杀死;
19    hadoop集群中实现HA    
    使用QJM或者NFS共享存储        
20    为什么在HDFS,读是并行的,但写不是    
    HDFS的读可以MR分割成块读取,但写MR并不能并行;    
    -- 导致spark的读也是并行的(细粒度),但写是粗粒度    
    -- HDFS的读是并行的,写是独占写入,前面的两个文件同时写一个HDFS的原理即是来源于此
    -- 类似spark读是细粒度,写是粗粒度;
21    报错:访问hdfs报错:连接被拒绝,java异常    namenode不工作了    
    可能是namenode是在安全模式
    或者namenodeIP地址改变了
    hdfs连接异常报错:一般是namenode报错,所以namenode和hdfs的联系较为紧密;
22    zookeeper在集群中的作用    
    管理集群、hadoop节点之间的协调、元数据的同步        
23    什么是hive中的serdr    
    一种序列化和一个反序列化的组合    
    -- hive使用serdr来读取和写入表行    
    SerDr说明hive如何去处理一条记录,包括Serialize/Deserilize两个功能
    Serialize把hive使用的java object转换成能写入hdfs的字节序列,或者其他系统能识别的流文件
    Deserilize把字符串或者二进制流转换成hive能识别的java object对象
24    hive存储表中数据的默认位置是    
    HDFS://NameNode/用户/hive/warehouse        
    hive,hdfs的元数据信息都存在hdfs的namenode文件夹对应用户下面;
25    hbase中的WAL和Hlog    
    WAL:预写日志    
    记录数据发生的所有更改,在服务器发生故障时,WAL作为生命线检索丢失的数据;    
    -- WAL是hbase的生命线

spark综述


1    spark怎么实现HA
    spark master使用zookeePer做HA    
    并且把元数据在ZK中保存    
    -- hadoop用NFS做HA,spark master使用ZK做HA    
2    spark master HA主从切换不会影响集群已有作业运行,为什么?    
    因为不需要再和master通讯    
    程序的资源申请的过程先于程序调度的过程,程序在运行之前,已经申请过资源了,driver和Executors通讯,不需要和master进行通讯的
    -- 所以master节点换了,也不会影响现有节点,只要excutor的节点没挂就可以;    
3    什么是粗粒度分配,什么是细粒度分配    
    粗粒度,启动时就分配好资源,后续就使用这个分配好的资源,我称之为大方分配
    细粒度    用资源的时候分配,用完就立即收回,我称之为小气分配
4    spark有哪些常见的稳定版本    
    1.6或者2.0        
5    driver的功能(有点像jobtracker)    
    作业的主进程,具有main函数,并且有sparkcontext,是程序的入口    
    作用:
    负责向集群申请资源
    向master注册信息
    作业调度
    作业解析
    生成stage
    调度task到executor上
    包括DAGScheduler,TaskScheduler"    
6    work的主要工作(有点像jobtracker)        
    管理当前节点内存、CPU使用情况;
    接受master分配过来的资源指令
    通过executorrunner启动程序;
    不会汇报当前信息给master,这是driver的工作;
    不会运行程序的代码,那是excutor的工作;"    
7    什么是rdd的宽依赖和窄依赖    
    宽依赖    多个子RDD依赖同一个父RDD    
    窄依赖    一个子RDD依赖一个父RDD    
8    cache后面不能接其他算子    
    可以,但接了算子之后,起不到缓存应有的效果
    因为其他算子相当于读了cache的内容,重新触发了cache;        
9    reducebykey 和 reduce两个算子    
    reduceByKey不是action,reduce是action        
10    数据本地化是在哪个环节确定的    
    是由具体的task在哪台机器上运行确定的        
11    RDD的弹性表现在哪几点    
    自动进行内存和磁盘的存储切换 -- 内存和磁盘的弹性
    容错重试 -- 容错的弹性
    分片的弹性 -- 分片的弹性
12    RDD有哪些缺陷    
    不支持细粒度的写和更新操作,spark写数据是粗粒度的,但读数据是细粒度的;
    不支持增量迭代计算,flink支持;-- flink相比于spark的优势:支持增量迭代        
13    spark的shuffle过程    
    比如groupByKey就会有一个shuffle过程,通过键的哈希值shuffle;        
14    如何从kafka中获取数据    
    基于receiver的方式:是kafka的高层次Consumer API;
    基于Direct方式:周期性的查询kafka来获得每个topic+partition最新的offset,当处理数据的job启动时,就会使用kafka的简单的consumer api来获取kafka指定的offset范围的数据;"    offset: 消息序列号,一个连续的用于定位被追加到分区的每一个消息的序列号,最大值为64位的long大小,19位数字字符长度    kafka中各关键词的解释:https://blog.csdn.net/sand_clock/article/details/68486599
15    kafka中数据倾斜解决方案    "首先是定位数据倾斜:OOM或者是任务执行缓慢,看日志或者看WebUI
    解决:
    1)、广播小表
    2)、分拆数据倾斜部分为几个部分
    3)、增大并行度
    4)、自定义partitioner,分散key的分布"        
16    spark中数据的位置是谁管理的    
    是由blockmanager进行管理        
17    spark如何处理不能被序列化的对象    
    将不能序列化的对象封装成object即可        
18    spark程序执行,有时候默认为什么产生很多task,怎么修改task执行个数?    
    task和partion是一一对应的,只要设置partition个数即可;    
    -- 注意:task和partition是一一对应的    
19    为什么spark application没有获得足够的资源,job就开始执行了    
    因为task的excutor申请资源和程序执行是两个过程,一般是先资源申请,然后程序执行,此时有可能是这两个过程异步了;    
20    什么叫spark持久化    
    通俗解释既是落了内存        
21    为什么要进行序列化    
    序列化可以减少数据的体积,减少存储空间
    但坏处是还要反序列化
    

habase综述


1    hbase读写    
    github pysaprk+hbase 工具类:https://github.com/zenyud/Pyspark_ETL    
    主要原理:
        hbase-client用来连接客户端
        hbase-server用来进行hbase的各种操作"
2    hbase查询            
    还可以使用上面的程序查询
3    hbase和mysql(等其他关系数据库的写入写出)的实现
    https://segmentfault.com/a/1190000013928073
    https://blog.csdn.net/thinkpadshi/article/details/77628346
    1)、除了直接用程序对hbase进行读取操作之外,也可以先把数据写入关系型数据库,然后用sqoop实现读取;
    2)、一般,mysql的表名对应hbase的column-family,mysql的主键对应hbase的rowkey
        mysql表名 -- 类似hbase的列簇名
        mysql的主键 -- 类似hbase的rowkey
        -- 上面两点可以从mysql数据导入hbase看出来;
    3)、可以使用sqoop完成hbase和关系型数据库的互相传导;
    
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值