Hadoop生态系统及开发
运维:hdfs集群的安装,部署,配置 实验 重点 (各种实验)
开发:hdfs api mapreduce api 简单demo 程序
大数据两个核心问题:
分布式存储:hdfs
分布式计算:mapreduce
大数据两个典型应用场景:
历史 离线 批处理:MapReduce(外存hdfs)
实时 在线 流处理:Spark内存(微批处理) Storm Flink
实时检索:
Hadoop狭义: HDFS MapReduce Yarn
Hadoop广义: 构成一个生态系统 Zookeeper HBase Hive
HDFS分布式文件系统 分布式存储框架
主要特性:
数据块:固定大小128M 默认3个
副本 DataNode 本地文件系统的普通文件
超大文件,不适合存放小文件 NameNode
流式数据访问 字节流 字节数组
一次写入多次读取:随机写:不支持;2.0追加写:可以支持多次追加写入
不适合低延迟访问:实时性差
可扩展性:扩容实验
跨平台性:Java
副本存放策略:
机架感知
心跳机制
负载均衡
MapReduce 分布式计算框架
HDFS Shell命令行接口 hadoop文件操作命令hadoop fs
HDFS Java API编程接口
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
hadoop运行jar包命令 hadoop jar
HDFS的读写流程
HDFS的安全模式:检查数据块完整性 hadoop管理命令hadoop dfsadmin
HDFS的启动过程:加载元数据到内存,恢复重启前的内存元数据
什么是元数据持久化?
答:NameNode持久化是将NameNode的元数据写入磁盘中进行存储,当NameNode挂了之后重启的时候,会去磁盘读取相应的元数据,恢复集群的状态
SecondarNameNode的作用?
答:Secondary NameNode所做的是在文件系统中设置一个检查点来帮助NameNode更好的工作
SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。
为什么要定期合并fsimage和EditLog?
如果所有的更新操作都往fsimage文件中添加,这样会导致系统运行的十分缓慢,对于更新操作都会记录在editlog中,为了避免editlog不断增大,secondary namenode会周期性合并fsimage和edits成新的fsimage,新的操作记录会写入新的editlog中