Hadoop是一种分布式数据和计算的框架。序列化机制,支持多语言交互
// 特点
数据并行,处理串行!
生态圈组件:
HDFS:是一个高度容错性的系统,提供高吞吐量的数据访问,突破硬盘大小的限制,适合大规模数据集上的应用,可为yarn和Hbase服务。
Yarn:通用的资源协同任务调度框架,解决namenode负载太大和其他问题,提高资源利用率,具有良好的扩展性,可用性,可靠性,向后兼容性。在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)
mapreduce:计算框架,通过map,reduce来分布式的流式处理数据,适用离线,实时要求低的需求。
zookeeper : 开源的分布式用用程序协调服务,基于zk可以实现,同步服务、配置维护、命名服务。
Flume : 高可用的,可靠的,分布式海量日志采集、聚合、传输 系统。
Hbase : 分布式,面向列的,开源数据库,存储在HDFS上。
Hive : hadoop 的数据仓库管理工具,可以将结构化的数据档映射为一张数据库表,提供简单的sql查询,并将标准sql语句转换为MR运行。
Sqoop : 关系型数据库 数据 和 HDFS 相互变换。
特点
- 移植性:Hadoop是用Java编写的,并且在所有主要平台上都受支持。
- 操作性:支持类似shell的命令直接与HDFS交互。
- 容错:它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
- 高效:它以并行的方式工作,通过并行处理加快处理速度(数据并行,处理串行)。
- 性价比:依赖于社区服务,成本比较低。
动态添加节点
步骤:
- 关闭新增节点的防火墙,selinux,配置环境的步骤
- 在 NameNode和新节点 的 hosts 文件中配置映射
- 配置 NameNode 和新节点 SSH 免密码登录
- 在 NameNode ,将新节点名 添加到 slaves
- 在其他节点上执行刷新操作:hdfs dfsadmin -refreshNodes
- 启动 DataNode 节点
- 查看 NameNode 的监控页面看是否有新增加的节点
// 添加节点之后
start-balancer.sh
# 不执行该命令,会把新数据都存放在这个新节点上
dfs.replication设置的副本系数只在文件系统写入时有效,并不影响在新添加,平衡时副本数
namenode 宕机恢复
- 编辑core-site.xml 增加checkpoint相关配置
fs.checkpoint.dir | 恢复文件的存放目录 |
---|---|
fs.checkpoint.period | 同步时间检查 |
fs.checkpoint.size | 超过大小直接同步 |
- 将新节点配置好
- 同步配置格式化namenode,启动
启动时日志会error
如果硬盘损坏,把secondnamenode 打包放在namenode的 fs.checkpoint.dir目录下
执行:
hadoop namenode -importcheckpoint
Hadoop HA是指同时启动两个NameNode,一个处于工作状态,另外一个处于随时待命状态,这样在处于工作状态的NameNode所在的服务器宕机时,可在数据不丢失的情况下,手工或者自动切换到另外一个NameNode提供服务。