hadoop基础知识分享(一)
Hadoop 概述
Hadoop 是一个适合海量数据的分布式存储和分布式计算的平台。Hadoop 的处理思想是“分而治之”。Hadoop 主要包含三个核心组件:
- HDFS:分布式存储框架,适合海量数据存储
- MapReduce:分布式计算框架,适合海量数据计算
- YARN:资源调度平台,负责给计算框架分配计算资源
Hadoop 组件介绍
- HDFS(Hadoop Distributed File System):分布式文件存储系统,采用主从架构,主节点为 NameNode,负责管理文件系统的名称空间和文件的访问;从节点为 DataNode,负责实际数据的存储。
- MapReduce:一种依赖磁盘 I/O 的批处理计算模型,通过主从结构进行分布式计算。主节点为 MRAppMaster,负责接收任务并调度;从节点执行具体的计算任务。
- YARN(Yet Another Resource Negotiator):负责资源调度和管理,主节点为 ResourceManager,从节点为 NodeManager。
Hadoop 分布式搭建步骤
- 关闭防火墙并设置所有节点名称和相关映射。
- 设置免密钥。
- 上传 Hadoop 安装包并解压。
- 配置环境变量。
- 修改配置文件。
- 同步文件。
- 格式化并启动(仅第一次需要格式化)。
HDFS(Hadoop Distributed File System)
架构与原理
- 主从结构:HDFS 具有主从架构,主节点(NameNode)负责管理文件系统的元数据,从节点(DataNode)负责存储实际数据。
- 块(Block):数据以块的形式存储,每个块大小默认 128MB(Hadoop 2.0 以后),块的大小可以通过
hdfs-site.xml
配置。 - 副本(Replication):为了提高数据的可靠性,HDFS 会将数据块备份到多个 DataNode 上。
元数据管理
- fsimage:元数据镜像文件,存储某一时段 NameNode 内存元数据信息。
- edits:操作日志文件,记录新增元信息日志。
- fstime:保存最近一次 checkpoint 的时间。
SecondaryNameNode 的作用
- 帮助 NameNode 完成元数据信息的合并。
- 工作流程:
- SecondaryNameNode 向 NameNode 发起 Checkpoint 请求。
- 从 NameNode 获取 fsimage 和 edits。
- 合并 edits。
- 将新的 fsimage 发回给 NameNode。
- NameNode 用新的 fsimage 替换旧的 fsimage。
HDFS 读写流程
- 写流程:客户端将数据写入 HDFS,数据被分成多个块,存储到多个 DataNode 上。
- 读流程:客户端通过 NameNode 获取块的位置,从对应的 DataNode 读取数据。
YARN(Yet Another Resource Negotiator)
架构
- 主节点:ResourceManager,负责资源分配和调度。
- 从节点:NodeManager,负责单节点资源的管理(CPU 和内存)。
Container
- 定义:Container 是 YARN 中资源的抽象,封装了某个节点上一定量的资源(CPU 和内存)。
- 作用:Container 由 ApplicationMaster 向 ResourceManager 申请,并在 NodeManager 上运行。
MapReduce
架构
- 主节点:MRAppMaster,负责接收和调度任务。
- 从节点:任务执行节点(具体的 Task)。
提交任务步骤
- 编写 MapReduce 程序,定义 Mapper 和 Reducer 类。
- 编译程序生成
.jar
文件。 - 上传数据到 HDFS。
- 提交任务:
hadoop jar your-program.jar YourMainClass -D mapreduce.job.reduces=2 -input /hdfs/input/path -output /hdfs/output/path
- 查看任务状态:
yarn application -status <applicationId>
Hadoop 命令
集群管理
- 启动所有进程:
start-all.sh
- 停止所有进程:
stop-all.sh
- 启动 HDFS 和 YARN 相关进程:
start-dfs.sh start-yarn.sh
- 停止 HDFS 和 YARN 相关进程:
stop-dfs.sh stop-yarn.sh
文件操作
- 上传文件:
hdfs dfs -put 本地路径 HDFS路径 hdfs dfs -copyFromLocal 本地路径 HDFS路径
- 下载文件:
hdfs dfs -get HDFS路径 本地路径 hdfs dfs -copyToLocal HDFS路径 本地路径
- 创建目录:
hdfs dfs -mkdir HDFS路径
- 查看文件内容:
hdfs dfs -cat HDFS路径 hdfs dfs -tail HDFS路径 hdfs dfs -text HDFS路径
文件管理
- 追加内容:
hdfs dfs -appendToFile 本地路径 HDFS路径
- 删除文件:
hdfs dfs -rm -r -f HDFS路径
- 复制文件:
hdfs dfs -cp 源路径 目标路径
- 重命名文件:
hdfs dfs -mv 源路径 目标路径
- 修改文件权限:
hdfs dfs -chmod 735 目标路径 hdfs dfs -chmod -R 735 目标路径
- 查看存储空间:
hdfs dfs -df hdfs dfs -du -h /
RPC 协议
- RPC(Remote Procedure Call)是远程过程调用协议,用于通过网络从远程计算机程序上请求服务,而无需了解底层网络技术。RPC 采用客户端/服务器模式,客户端发送请求,服务器处理请求并返回结果。