1、谈谈Zookeeper理解
Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题( 解决单点故障问题 )。
Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化,通过监控这些数据状态的变化,从而可以达到基于数据的集群管理
总结: Zookeeper=文件系统+通知机制
spark
2、请列举出曾经修改过的/etc/下面的文件,并说明修改要解决什么问题?
/etc/profile这个文件,主要是用来配置环境变量。让hadoop命令可以在任意目录下面执行。
/ect/sudoers
/etc/hosts
/etc/sysconfig/network
/etc/inittab
3、宕机分为HMaster宕机和HRegisoner宕机,如果是HRegisoner宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。
如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。
4、offset是每天消息的偏移量
每个日志文件都有一个offset来唯一标记一条信息,由8个自己数字表示,表示此消息在分区中所处的起始位置
每个分区再物理存储层面,由多个logfile组成(segment)
最小的offset表示segment中起始消息的offset
5、hbase中表的特点
大:上亿行,上百万列
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列
面向列的存储和权限控制,列族独立索引
对于为null的列,并不占用存储空间,因此表可以设置的非常稀疏
数据多版本:可以有多个版本,系统自动分配,时间戳为版本号
数据类型单一:只有字节数组 byte[]
129.hbase 表逻辑结构
表有 行 和 列组成,列划分为若干个列族cloumn
表明 test
rowkey 列族1:base_info 列族2:xxx_info
0001 name:zhangsan age:20 address:bj
0002 name:lishi age:50 sex:male address:shanghai hoppies:sing
rowkey:hbase的行索引,按照rowkey字典顺序排序
cell可以锁定一个值:Rowkey+列族+列族下的列的名字+值+时间戳
6、请写出以下的shell命令
1、 杀死一个job
2、 删除hdfs上的 /tmp/aaa目录
3、 加入一个新的存储节点和删除一个节点需要执行的命令
4、 hadoop job –list 得到job的id,然后执 行 hadoop job -kill jobId就可以杀死一个指定jobId的job工作了。
5、 hadoopfs -rmr /tmp/aaa
6、 增加一个新的节点在新的几点上执行
Hadoop daemon.sh start datanode
Hadooop daemon.sh start tasktracker/nodemanager
下线时,要在conf目录下的excludes文件中列出要下线的datanode机器主机名
然后在主节点中执行 hadoop dfsadmin -refreshnodes à下线一个datanode
删除一个节点的时候,只需要在主节点执行
hadoop mradmin -refreshnodes —下线一个tasktracker/nodemanager
7、简答说一下hadoop的map-reduce编程模型
首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合
使用的是hadoop内置的数据类型,比如longwritable、text等
将键值对集合输入mapper进行业务处理过程,将其转换成需要的key-value在输出
之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getpartition方法来自定义分区规则
之后会对key进行进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义分组规则
之后进行一个combiner归约操作,其实就是一个本地段的reduce预处理,以减小后面shufle和reducer的工作量
reduce task会通过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个job
8、MR程序运行的时候会有什么比较常见的问题?
比如说作业中大部分都完成了,但是总有几个reduce一直在运行。
这是因为这几个reduce中的处理的数据要远远大于其他的reduce,可能是对键值对任务划分的不均匀造成的数据倾斜。
解决的方法可以在分区的时候重新定义分区规则对于value数据很多的key可以进行拆分、均匀打散等处理,或者是在map端的combiner中进行数据预处理的操作。
9、hive能像关系型数据库那样建多个库吗?
当然能了。
10、请列出你所知道的hadoop调度器,并简要说明其工作方法
Fifo schedular :默认,先进先出的原则
Capacity schedular :计算能力调度器,选择占用最小、优先级高的先执行,依此类推。
Fair schedular:公平调度,所有的 job 具有相同的资源。