笔记内容选自慕课网《大数据开发工程师》体系课

2.1 什么是Hadoop

  • Hadoop的作者是Doug Cutting,Hadoop这个名字是作者的孩子给他的毛绒象玩具起的名字
  • 我们生活在一个数据大爆炸的时代,数据飞快的增长,急需解决海量数据的存储和计算问题
  • Hadoop适合海量数据,且包含三大组件HDFS(分布式存储)和MapReduce(分布式计算)和YARN(分布式资源管理)

2.2 虚拟机基本环境搭建

  1. # 1、准备一台VMware的CentOS7虚拟机,修改ip
  2. vi /etc/sysconfig/network-scripts/ifcfg-ens33
  3. # 第一台节点为:192.168.53.100
  4. BOOTPROTO="static"
  5. IPADDR=192.168.53.100
  6. GATEWAY=192.168.53.2
  7. DNS1=192.168.53.2
  8. # 重启网卡
  9. service network restart
  10. # 设置第一台主机名称为:bigdata01
  11. vi /etc/hostname
  12. bigdata01
  13. # 关闭防火墙
  14. systemctl stop firewalld
  15. # 剔除防火墙开机自启
  16. systemctl disable firewalld
  17. # 设置公钥,免密登录,一直按enter
  18. ssh-keygen -t rsa
  19. # 查看公钥,私钥文件
  20. ll ~/.ssh/
  21. # 把文件重定向到自动授权里
  22. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  23. # 登录无需输密码
  24. ssh bigdata01
  25. exit
  26. # 2、创建文件夹安装jdk
  27. mkdir -p /data/soft
  28. # 通过sftp把 jdk-8u202-linux-x64.tar.gz 上传到soft文件夹里
  29. cd /data/soft
  30. # 解压jdk
  31. tar -zxvf jdk-8u202-linux-x64.tar.gz
  32. # 重命名jdk
  33. mv jdk1.8.0_202/ jdk1.8
  34. # 配置环境变量
  35. vi /etc/profile
  36. ...
  37. export JAVA_HOME=/data/soft/jdk1.8
  38. export PATH=.:$JAVA_HOME/bin:$PATH
  39. # 重新加载
  40. source /etc/profile
  41. # 检查版本
  42. java -version

2.3 单体Hadoop环境搭建

image.png

  1. # 安装Hadoop,通过sftp把 hadoop-3.2.0.tar.gz 上传到soft文件夹里进行解压
  2. tar -zxvf hadoop-3.2.0.tar.gz
  3. # 修改环境变量
  4. vi /etc/profile
  5. ...
  6. export JAVA_HOME=/data/soft/jdk1.8
  7. export HADOOP_HOME=/data/soft/hadoop-3.2.0
  8. export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
  9. # 重新加载
  10. source /etc/profile
  11. # 检查是否配置成功
  12. hdfs
  13. yarn
  14. # 进入Hadoop
  15. cd hadoop-3.2.0
  16. # 查看Hadoop文件内部结构
  17. drwxr-xr-x. 2 1001 1002 203 Jan 8 2019 bin
  18. drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 etc
  19. drwxr-xr-x. 2 1001 1002 106 Jan 8 2019 include
  20. drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 lib
  21. drwxr-xr-x. 4 1001 1002 4096 Jan 8 2019 libexec
  22. -rw-rw-r--. 1 1001 1002 150569 Oct 19 2018 LICENSE.txt
  23. -rw-rw-r--. 1 1001 1002 22125 Oct 19 2018 NOTICE.txt
  24. -rw-rw-r--. 1 1001 1002 1361 Oct 19 2018 README.txt
  25. drwxr-xr-x. 3 1001 1002 4096 Jan 8 2019 sbin
  26. drwxr-xr-x. 4 1001 1002 31 Jan 8 2019 share
  27. #!hadoop目录下面有两个重要的目录,一个是bin目录,一个是sbin目录
  28. bin目录,这里面有hdfsyarn等脚本,这些脚本后期主要是为了操作hadoop集群中的hdfsyarn组件的
  29. sbin目录,这里面有很多startstop开头的脚本,这些脚本是负责启动 或者停止集群中的组件的。
  30. etc/hadoop目录,这里面都是些 xml 文件,用于Hadoop配置信息
  31. # 修改Hadoop配置文件,主要修改下面这几个文件
  32. hadoop-env.sh
  33. core-site.xml
  34. hdfs-site.xml
  35. mapred-site.xml
  36. yarn-site.xml
  37. workers
  38. # 进入目录
  39. cd /etc/hadoop
  40. #! 修改第一个
  41. vi hadoop-env.sh
  42. ...
  43. export JAVA_HOME=/data/soft/jdk1.8
  44. export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop
  45. #! 修改第二个
  46. vi core-site.xml
  47. ...
  48. <configuration>
  49. <property>
  50. <name>fs.defaultFS</name>
  51. <value>hdfs://bigdata01:9000</value>
  52. </property>
  53. <property>
  54. <name>hadoop.tmp.dir</name>
  55. <value>/data/hadoop_repo</value>
  56. </property>
  57. </configuration>
  58. #! 修改第三个
  59. vi hdfs-site.xml
  60. ...
  61. <configuration>
  62. <property>
  63. <name>dfs.replication</name>
  64. <value>1</value>
  65. </property>
  66. </configuration>
  67. #! 修改第四个
  68. vi mapred-site.xml
  69. ...
  70. <configuration>
  71. <property>
  72. <name>mapreduce.framework.name</name>
  73. <value>yarn</value>
  74. </property>
  75. </configuration>
  76. #! 修改第五个
  77. vi yarn-site.xml
  78. ...
  79. <configuration>
  80. <property>
  81. <name>yarn.nodemanager.aux-services</name>
  82. <value>mapreduce_shuffle</value>
  83. </property>
  84. <property>
  85. <name>yarn.nodemanager.env-whitelist</name>
  86. <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  87. </property>
  88. </configuration>
  89. #! 修改第六个
  90. vi workers
  91. ...
  92. bigdata01
  93. # 配置完成,还不能启动,需要HDFS格式化,就像买了一块新硬盘需要格式化才能装程序
  94. cd /data/soft/hadoop-3.2.0
  95. bin/hdfs namenode -format
  96. #! 一般只格式化一次,如果想重新格式化,需要移除 rm -rf /data/hadoop_repo/
  97. # 修改sbin目录
  98. cd sbin
  99. # 主要修改一下几个脚本
  100. start-dfs.sh
  101. stop-dfs.sh
  102. start-yarn.sh
  103. stop-yarn.sh
  104. #! 修改第一个
  105. vi start-dfs.sh
  106. ...
  107. # limitations under the License.
  108. HDFS_DATANODE_USER=root
  109. HDFS_DATANODE_SECURE_USER=hdfs
  110. HDFS_NAMENODE_USER=root
  111. HDFS_SECONDARYNAMENODE_USER=root
  112. #! 修改第二个
  113. vi stop-dfs.sh
  114. ...
  115. # limitations under the License.
  116. HDFS_DATANODE_USER=root
  117. HDFS_DATANODE_SECURE_USER=hdfs
  118. HDFS_NAMENODE_USER=root
  119. HDFS_SECONDARYNAMENODE_USER=root
  120. #! 修改第三个
  121. vi start-yarn.sh
  122. ...
  123. # limitations under the License.
  124. YARN_RESOURCEMANAGER_USER=root
  125. HADOOP_SECURE_DN_USER=yarn
  126. YARN_NODEMANAGER_USER=root
  127. #! 修改第四个
  128. vi stop-yarn.sh
  129. ...
  130. # limitations under the License.
  131. YARN_RESOURCEMANAGER_USER=root
  132. HADOOP_SECURE_DN_USER=yarn
  133. YARN_NODEMANAGER_USER=root
  134. # 启动Hadoop集群
  135. /data/soft/hadoop-3.2.0/sbin/start-all.sh
  136. # jps:查看Hadoop启动进程
  137. 11224 Jps
  138. 10332 DataNode
  139. 10173 NameNode
  140. 11086 NodeManager
  141. 10767 ResourceManager
  142. 10531 SecondaryNameNode
  143. #! 如果启动失败,可以到 /data/hadoop_repo/logs/hadoop 里查看启动日志
  144. # 界面测试
  145. HDFS webui界面:192.168.53.100:9870
  146. YARN webui界面:192.168.53.100:8088
  147. # 修改电脑的host
  148. 192.168.53.100 bigdata01
  149. # 进入测试
  150. bigdata01:8088
  151. # 停止Hadoop集群
  152. /data/soft/hadoop-3.2.0/sbin/stop-all.sh

2.4 集群Hadoop基本环境搭建

image.png

  1. # 重复虚拟机环境搭建出3台,这三台机器的ip、hostname、firewalld、ssh免密码登录、JDK这些基础环境已经配置ok,分别为
  2. 「主节点」bigdata01 192.168.53.100
  3. 「子节点」bigdata02 192.168.53.101
  4. 「子节点」bigdata03 192.168.53.102
  5. # 修改本地电脑的host文件,Mac和Win的路径不同
  6. 192.168.53.100 bigdata01
  7. 192.168.53.101 bigdata02
  8. 192.168.53.102 bigdata03
  9. # 修改三台虚拟机hosts,从而可以互相ping通
  10. vi /etc/hosts
  11. 192.168.53.100 bigdata01
  12. 192.168.53.101 bigdata02
  13. 192.168.53.102 bigdata03
  14. # 添加时间服务器到三台虚拟机,从而实现集群之间的时间同步问题
  15. yum install -y ntpdate
  16. vi /etc/crontab
  17. ...
  18. * * * * * root /usr/sbin/ntpdate -u ntp.sjtu.edu.cn
  19. # 切到bigdata01服务器,把主节点的公钥拷贝到两个子节点
  20. scp ~/.ssh/authorized_keys bigdata02:~/
  21. scp ~/.ssh/authorized_keys bigdata03:~/
  22. # 切到bigdata02服务器,追加免登陆信息
  23. cat ~/authorized_keys >> ~/.ssh/authorized_keys
  24. # 切到bigdata03服务器,追加免登陆信息
  25. cat ~/authorized_keys >> ~/.ssh/authorized_keys
  26. # 切到bigdata01服务器,测试连接到02,03服务器
  27. ssh bigdata02
  28. ssh bigdata03

2.4.1开始安装Hadoop

  1. # 切到bigdata01服务器,安装Hadoop,通过sftp把 hadoop-3.2.0.tar.gz 上传到soft文件夹里进行解压
  2. cd /data/soft
  3. tar -zxvf hadoop-3.2.0.tar.gz
  4. # 修改环境变量
  5. vi /etc/profile
  6. ...
  7. export JAVA_HOME=/data/soft/jdk1.8
  8. export HADOOP_HOME=/data/soft/hadoop-3.2.0
  9. export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
  10. # 重新加载
  11. source /etc/profile
  12. # 检查是否配置成功
  13. hdfs
  14. yarn
  15. # 进入Hadoop
  16. cd hadoop-3.2.0
  17. # 查看Hadoop文件内部结构
  18. drwxr-xr-x. 2 1001 1002 203 Jan 8 2019 bin
  19. drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 etc
  20. drwxr-xr-x. 2 1001 1002 106 Jan 8 2019 include
  21. drwxr-xr-x. 3 1001 1002 20 Jan 8 2019 lib
  22. drwxr-xr-x. 4 1001 1002 4096 Jan 8 2019 libexec
  23. -rw-rw-r--. 1 1001 1002 150569 Oct 19 2018 LICENSE.txt
  24. -rw-rw-r--. 1 1001 1002 22125 Oct 19 2018 NOTICE.txt
  25. -rw-rw-r--. 1 1001 1002 1361 Oct 19 2018 README.txt
  26. drwxr-xr-x. 3 1001 1002 4096 Jan 8 2019 sbin
  27. drwxr-xr-x. 4 1001 1002 31 Jan 8 2019 share
  28. #!hadoop目录下面有两个重要的目录,一个是bin目录,一个是sbin目录
  29. bin目录,这里面有hdfsyarn等脚本,这些脚本后期主要是为了操作hadoop集群中的hdfsyarn组件的
  30. sbin目录,这里面有很多startstop开头的脚本,这些脚本是负责启动 或者停止集群中的组件的。
  31. etc/hadoop目录,这里面都是些 xml 文件,用于Hadoop配置信息
  32. # 修改Hadoop配置文件,主要修改下面这几个文件
  33. hadoop-env.sh
  34. core-site.xml
  35. hdfs-site.xml
  36. mapred-site.xml
  37. yarn-site.xml
  38. workers
  39. # 进入目录
  40. cd etc/hadoop

2.4.2 vi hadoop-env.sh

  1. export JAVA_HOME=/data/soft/jdk1.8
  2. export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

2.4.3 vi core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://bigdata01:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/data/hadoop_repo</value>
  9. </property>
  10. </configuration>

2.4.4 vi hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata01:50090</value>
    </property>
</configuration>

2.4.5 vi mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

2.4.6 vi yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata01</value>
    </property>
</configuration>

2.4.7 vi workers

bigdata02
bigdata03

2.4.8 修改启动脚本

cd /data/soft/hadoop-3.2.0/sbin

# 修改hdfs启动脚本
vi start-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

# 修改hdfs关闭脚本
vi stop-dfs.sh
...
# limitations under the License.
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

# 修改yarn启动脚本
vi start-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

# 修改yarn关闭脚本
vi stop-yarn.sh
...
# limitations under the License.
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

2.4.9 拷贝配置好的Hadoop到子节点

# 把bigdata01节点上将修改好配置的安装包拷贝到其他两个从节点
cd /data/soft/
scp -rq hadoop-3.2.0 bigdata02:/data/soft/
scp -rq hadoop-3.2.0 bigdata03:/data/soft/

# 在bigdata01节点上格式化HDFS
cd /data/soft/hadoop-3.2.0
bin/hdfs namenode -format

# 在bigdata01节点启动集群
sbin/start-all.sh

# 在bigdata01节点验证进程
jps
6128 NameNode
6621 ResourceManager
6382 SecondaryNameNode

# 在bigdata02节点验证进程
jps
2276 DataNode
2385 NodeManager

# 在bigdata03节点验证进程
jps
2217 DataNode
2326 NodeManager

# 在bigdata01节点停止集群
sbin/stop-all.sh

2.5 Hadoop的客户端节点

image.png

  • 在实际工作中不建议直接连接集群中的节点来操作集群,直接把集群中的节点暴露给普通开发人员是不安全的
  • 建议在业务机器上安装Hadoop,这样就可以在业务机器上操作Hadoop集群了,此机器就称为是Hadoop的客户端节点
    • 类似于Navicat客户端操作MySQL服务,不会对MySQL服务整体运行有什么影响。