171-Hadoop-源码:
以了解有印象,动手debug为主。大致流程和思想。
RPC 通信原理解析
1)需求:
模拟 RPC 的客户端、服务端、通信协议三者如何工作的
https://gitee.com/HaoZhouRS/bigdata-study-code/tree/master/big-data-study/Hadoop-HDFS/src/main/java/com/zh/study/grpc
NameNode 启动源码解析
在 pom.xml 中增加如下依赖
org.apache.hadoop
hadoop-client
3.1.3
org.apache.hadoop
hadoop-hdfs
3.1.3
org.apache.hadoop
hadoop-hdfs-client
3.1.3
provided
入口
初始化org.apache.hadoop.hdfs.server.namenode.NameNode#initialize
启动 HTTP 服务端(9870) org.apache.hadoop.hdfs.server.namenode.NameNode#startHttpServer
加载镜像和编辑日志org.apache.hadoop.hdfs.server.namenode.NameNode#loadNamesystem
初始化NN的RPC 服务端org.apache.hadoop.hdfs.server.namenode.NameNode#createRpcServer
nn启动资源检察(资源路径,磁盘大小,安全模式等)org.apache.hadoop.hdfs.server.namenode.NameNode#startCommonServices
NN对心跳检测org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager#activate
org.apache.hadoop.hdfs.server.blockmanagement.HeartbeatManager.Monitor#run
安全模式(块的0.999等)org.apache.hadoop.hdfs.server.namenode.FSNamesystem#startCommonServices
DataNode 启动源码解析
入口:org.apache.hadoop.hdfs.server.datanode.DataNode#main
创建datanode:org.apache.hadoop.hdfs.server.datanode.DataNode#createDataNode(java.lang.String[], org.apache.hadoop.conf.Configuration, org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter.SecureResources)
org.apache.hadoop.hdfs.server.datanode.DataNode#instantiateDataNode(java.lang.String[], org.apache.hadoop.conf.Configuration, org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter.SecureResources)
org.apache.hadoop.hdfs.server.datanode.DataNode#runDatanodeDaemon
startdatenode:org.apache.hadoop.hdfs.server.datanode.DataNode#startDataNode
更多自己debug了解流程吧。
HDFS 上传源码解析
Yarn 源码解析
Job提交流程源码解析
Hadoop 源码编译
官网下载源码
https://hadoop.apache.org/release/3.1.3.html
修改源码中的 HDFS 副本数的设置
CentOS 虚拟机准备
(1)CentOS 联网
配置 CentOS 能连接外网。Linux 虚拟机 ping www.baidu.com 是畅通的
注意:采用 root 角色编译,减少文件夹权限出现问题
(2)Jar 包准备(Hadoop 源码、JDK8、Maven、Ant 、Protobuf)
➢ hadoop-3.1.3-src.tar.gz
➢ jdk-8u212-linux-x64.tar.gz
➢ apache-maven-3.6.3-bin.tar.gz
➢ protobuf-2.5.0.tar.gz(序列化的框架)
➢ cmake-3.17.0.tar.gz
工具包安装
注意:所有操作必须在 root 用户下完成
0)分别创建/opt/software/hadoop_source和/opt/module/hadoop_source 路径
1)上传软件包到指定的目录,例如 /opt/software/hadoop_source
2)解压软件包指定的目录,例如: /opt/module/hadoop_source
[root@hadoop101 hadoop_source]$ tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/module/hadoop_source/
[root@hadoop101 hadoop_source]$ tar -zxvf cmake-3.17.0.tar.gz -C /opt/module/hadoop_source/
[root@hadoop101 hadoop_source]$ tar -zxvf hadoop-3.1.3-src.tar.gz -C /opt/module/hadoop_source/
[root@hadoop101 hadoop_source]$ tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/hadoop_source/
3)安装 JDK
验证 JDK 是否安装成功
[root@hadoop101 hadoop_source]$ java -version
java version “1.8.0_212”
Java™ SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot™ 64-Bit Server VM (build 25.212-b10, mixed mode)
4)配置 maven环境变量,maven 镜像,并验证
(1)配置 maven 的环境变量
[root@hadoop101 hadoop_source]# vim /etc/profile.d/my_env.sh
#MAVEN_HOME
MAVEN_HOME=/opt/module/hadoop_source/apache-maven-3.6.3
PATH= P A T H : PATH: PATH:JAVA_HOME/bin:$MAVEN_HOME/bin
[root@hadoop101 hadoop_source]# source /etc/profile
(2)修改 maven 的镜像
[root@hadoop101 apache-maven-3.6.3]# vi conf/settings.xml
# 在 mirrors 节点中添加阿里云镜像
nexus-aliyun
central
Nexus aliyun
http://maven.aliyun.com/nexus/content/groups/public
(3)验证 maven 安装是否成功
[root@hadoop101 hadoop_source]# mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/module/hadoop_source/apache-maven-3.6.3
Java version:
1.8.0_212, vendor: Oracle Corporation, runtime:
/opt/module/hadoop_source/jdk1.8.0_212/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: “linux”, version: “3.10.0-862.el7.x86_64”, arch: “amd64”, family:
“unix”
5)安装相关的依赖(注意安装顺序不可乱,可能会出现依赖找不到问题)
(1)安装 gcc make
[root@hadoop101 hadoop_source]# yum install -y gcc* make
(2)安装压缩工具
[root@hadoop101 hadoop_source]# yum -y install snappy* bzip2* lzo* zlib* lz4* gzip*
(3)安装一些基本工具
[root@hadoop101 hadoop_source]# yum -y install openssl* svn ncurses* autoconf automake libtool
(4)安装扩展源,才可安装 zstd
[root@hadoop101 hadoop_source]# yum -y install epel-release
(5)安装 zstd
[root@hadoop101 hadoop_source]# yum -y install zstd
6)手动安装 cmake
(1)在解压好的 cmake 目录下,执行./bootstrap 进行编译,此过程需一小时请耐心等待
[root@hadoop101 cmake-3.17.0]$ pwd
/opt/module/hadoop_source/cmake-3.17.0
[atguigu@hadoop101 cmake-3.17.0]$ ./bootstrap
(2)执行安装
[root@hadoop101 cmake-3.17.0]$ make && make install
(3)验证安装是否成功
[root@hadoop101 cmake-3.17.0]$ cmake -version
cmake version 3.17.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
7)安装 protobuf,进入到解压后的 protobuf 目录
[root@hadoop101 protobuf-2.5.0]$ pwd
/opt/module/hadoop_source/protobuf-2.5.0
(1)依次执行下列命令 --prefix 指定安装到当前目录
[root@hadoop101 protobuf-2.5.0]$ ./configure --prefix=/opt/module/hadoop_source/protobuf-2.5.0
[root@hadoop101 protobuf-2.5.0]$ make && make install
(2)配置环境变量
[root@hadoop101 protobuf-2.5.0]$ vim /etc/profile.d/my_env.sh
输入如下内容
PROTOC_HOME=/opt/module/hadoop_source/protobuf-2.5.0
PATH= P A T H : PATH: PATH:JAVA_HOME/bin: M A V E N H O M E / b i n : MAVEN_HOME/bin: MAVENHOME/bin:PROTOC_HOME/bin
(3)验证
[root@hadoop101 protobuf-2.5.0]$ source /etc/profile
[root@hadoop101 protobuf-2.5.0]$ protoc --version
libprotoc 2.5.0
8)软件包安装配置工作完成。
编译源码
1)进入解压后的 Hadoop 源码目录下
[root@hadoop101 hadoop-3.1.3-src]$ pwd
/opt/module/hadoop_source/hadoop-3.1.3-src
#开始编译
[root@hadoop101 hadoop-3.1.3-src]$ mvn clean package -DskipTests -Pdist,native -Dtar
注:中间过程很久,有时候好像会断网,依赖下载不全,最终安装成功,借鉴尚硅谷视频。结果如下。
成功的 64 位 hadoop 包在/opt/module/hadoop_source/hadoop-3.1.3-src/hadoop-dist/target 下
[root@hadoop101 target]# pwd
/opt/module/hadoop_source/hadoop-3.1.3-src/hadoop-dist/target
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230