数据本地化优化: map任务存储在本地hadoop数据节点上 会得到最大的执行效率, 这也为什么分片大小应该与块大小相同
HDFS:
Hadoop的分布式文件系统,为MapReduce提供数据源和Job信息存储。
Client Node:
执行MapReduce程序的进程,用来提交MapReduce Job。
JobTracker Node:
把完整的Job拆分成若干Task,负责调度协调所有Task,相当于Master的角色。
TaskTracker Node:
负责执行由JobTracker指派的Task,相当于Worker的角色。这其中的Task分为MapTask和ReduceTask。
map 将数据结果存储在本地
reduce 不具备本地化优势 因为数据输入需要map所有数据
combiner 函数 针对每个map执行的结果进行处理 可以减少集群之间的数据传输
Hadoop streaming 用于文本流处理
Hadoop namenode元数据存储在内存中 所以数据量大小限制于namenode 内存大小 快存储占用元数据150字节 Hadoop默认64M块大小
邦联HDFS 添加namenode 实现扩展 一个管理user 一个管理tmp等
name node 存储这两个文件
一个镜像命名空间元数据文件
一个是编辑日志文件
也记录数据节点信息 但不会永久保存 会在系统启动的时候重建
datanode 定期发送快信息到namenode
为了保护namenode 存在两种备份方式
备份元数据存储文件 同时写入远程磁盘
使用辅助namenode
fuse-dfs 调用libhdfs 访问 hdfs
webdav使用web接口访问hdfs文件
namenode 告知客户端最佳 datanode 客户端负责读取
distcp并行复制
Hadoop 存档 hadoop archive -archivename file.har /sources /des
使用 Hadoop存档 hadoop fs -ls har://my/files.har
hadoop datanode 节点选择副本存储节点
第一个 客户端节点复制第一个副本
第二个 另外一个不同机架的某一节点
第三个 相同机架随机选一个节点
hadoop 序列化工具: Avro
丰富的数据模式解析
具有跨语言优势: 用c编写的软件可以使用python读取.
hadoop 配置文件 使用 xml 进行config xml没有指定数据类型
oozie 工作流 将action和控制节点翻译成DAG 有向无环图 允许从失败的节点重新运行
Hadoop 不使用raid 因为raid 比Hadoop的jbod just a bunch of disks慢 慢10%
kerveros 开源的认证协议
认证
授权
服务请求
namenode 满足最小副本条件情况下 启动后30s 退出安全模式
hadoop dfsadmin -safemode get /leave /enter
hadoop fsck