*标题后数字对应Hadoop权威指南第4版页数
一. Hadoop-Ha规避机制(49)
1. 撤销namenode访问共享存储目录的权限
2. 通过远程管理命令屏蔽相应的网络端口
3. STONITH(shot the other node in the head):通过一个特定的供电单元对相应主机进行断电操作
二. 通过distcp并行复制(76)
用来处理复制大文件
默认情况下开启20个map,每个文件通过一个map进行复制
Distcp的常见第一个实例是在两个HDFS集群间传送数据,第二个是使用HttpFs代理作为distcp源或目标,这样具有设置防火墙和控制带宽的优点
三. 检测数据是否损坏的常见措施(96)
在数据第一次引入系统时计算校验和并在数据通过一个不可靠的通道进行传输时再次计算校验和。但其不能纠正错误,所以可以使用ECC内存。
四. HDFS的数据完整性(97)
Datanode 负责在收到数据后存储该数据及其校验和之前对数据进行验证。管线中最后一个datanode负责验证校验和。客户端读取数据时也会验证校验和,每个datanode均持久保存有一个用于验证的校验和日志。
五. RPC序列化格式(109)
1. 紧凑
紧凑格式能充分利用网络带宽
2. 快速
进程间通信形成了分布式系统的骨架,所以需要尽量减少序列化和反序列化的性能开销。
3. 可扩展
为了满足新的需求,协议不断变化。所以在控制客户端和服务器的过程中,需要直接引进相应的协议。例如,需要能够在方法调用的过程中增加新的参数,并且新的服务器需要能够接受来自老客户端的老格式的消息。
4. 支持互操作
对于某些系统来说,希望能够支持以不同语言格式写的客户端与服务器交互,所以需要设计需要一种特定的格式来满足这一需求。
六. String和Text的差异性(114-118)
1. String的长度是其所含char编码单元的个数,而Text对象的长度却是其UTF-8编码的字节数。
2. Text可变,可通过使用其中一个set()方法来重用Text实例
3. 但Text并没有像String那样多的字符串操作的API。所以需要转换成String。
七. 面向列的存储格式缺点(136-137)
1. 由于必须在内存中缓存行的分片,所以需要更多的内存读写
2. 不适合流的写操作,如果writer处理失败的话,当前的文件无法恢复。相反,面向行的存储格式可以一直读到writer失败后的最后的同步点。
八. 作业调试(168)
如果调试期间产生的日志数据规模比较大,可以有多种选择。一种是将这些信息写到map的输出流供reduce任务分析和汇总,而不是写到标准错误流。这种方法必须改变程序结构,所以先选用其他班级数。另一种是可以写一个程序来分析作业产生的日志。
九. 小文件问题
默认情况下,textinputformat对任务的切片机制是:按文件规划切片,不管文件多小都会交给一个maptask,如果有大量的这个小文件,就会产生大量的maptask,处理效率低下,容易造成内存溢出
优化办法
1.最优的:在数据处理系统的最前端(数据采集端)就将小文件合并成大文件再上传到hdfs中
2.如果已经很多小文件在hdfs中,用另外一种inputformat来做切片(comblineFileInputformat) 它可以将多个小文件从逻辑上规划到一个切片中,这样多个小文件就交给一个maptask
*Combiner可以减轻Reduce的数据倾斜问题
Attention:
1. Combiner的输入要和Map输出以及Reduce输入一致
2. 不能用来求平均值
3. 能用就用
Client就是提交程序端
十.推测执行(202)
十一.知识点补充
1. 当YG被GC15次后还有就放在老生代
2. HDFS切分发生在client端
3. NameNode节点返回资源列表遵循“就近就远再就近原则”
4. HBase的RowKey长度最好小于16kb
5. Region是HBase的最小单元
6. HFile=StoreFIle
7. Store个数=列簇数
8. MemStore大小=StoreFile
9. ZK记录了-root-的位置信息
10. HBase是个相对上写快读慢的DB:现在MemStore上找再在StoreFile中找
11. HBase无论读写都会访问ZK
十二.Hive
1. 内部表的数据在HDFS时用mv,在Linux本地时是cp
2. 分桶表中的数据不是load进来的而是查询出来的
3. Clustered by = distributed by + sorted by
分区和排序 分区 排序
4. 分桶的好处:
一般来说,select a.id,a.name,b,addr from a join b on a.id=b.id; 做全表的笛卡儿积
但,如果a表和b表都是分桶表,分桶字段都是id,分桶数一致,再做join时,会大大的提高了join效率
十三.保存Select数据的三种方法
1.insert into/overwrite table t_p select * from t_tmp;
2.create table t_p as select * from t_tmp;
3.将查询的结果保存在本地或者是hdfs
3.1 insert overwrite local directory '/root/hive' select * from t_p;
3.2 insert overwrite directory 'xxxxx' select * from t_p;
十四.
1. HBase以字节形式存储数据
2. Hadoop关闭安全模式: hadoop dfsadmin -safemode leave
十五.Sqoop解决数据倾斜问题:
①--split-by(按。。。进行分割)
②-m (num>1)
十六.数据仓库
1.什么是数据仓库?
各个部门数据的集合,通常保存在hive中
2.数据仓库作用是什么?
消除信息孤岛,为领导做决策支持
3.数据仓库的几大特点
3.1面向主题
3.2数据仓库是集成的
3.3数据仓库中的数据是不可更新的
3.4数据仓库中的数据是随时间不断变化的
4.OLAP和OLTP
操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策