• 「大数据-2.0」安装Hadoop和部署HDFS集群


    目录

    一、下载Hadoop安装包

    二、安装Hadoop

     0. 安装Hadoop前的必要准备

    1. 以root用户登录主节点虚拟机

    2. 上传Hadoop安装包到主节点

    3. 解压缩安装包到/export/server/目录中

    4. 构建软链接

    三、部署HDFS集群

    0. 集群部署规划

    1. 进入hadoop安装包内

    2 进入etc目录下的hadoop目录

    3. 配置workers文件

    4. 配置hadoop-env.sh文件

    5.配置core-site.xml文件

    6.配置hdfs-site.xml文件

    7. 准备数据目录

    8. 分发Hadoop文件夹

    三、配置环境变量 

    四、为Hadoop用户授权

    五、格式化HDFS文件系统

    1. 格式化namenode

    2. 一键启动hdfs集群

    3. 使用jps检查运行中的进程

    4. 查看HDFS WEBUI

    六、拍摄快照保存配置好的虚拟机 

    七、启动和关闭HDFS集群

    1. 一键启动HDFS集群

    2. 一键关闭HDFS集群 


    一、下载Hadoop安装

    1. 官网下载


    2. 百度网盘链接  提取码:2233

    二、安装Hadoop

    0. 安装Hadoop前的必要准备

            在开始部署前,请确认已经完成前置准备中的服务器创建、固定IP、防火墙关闭、Hadoop用户创建、SSH免密、JDK部署等操作。 如果不确定,请看博主文章:「大数据-0」虚拟机VMware安装、配置、使用、创建大数据集群教程


    1. 以root用户登录主节点虚拟机

            如博主的主节点为node1,所以在node1虚拟机中以root身份登录,进入/export/server/目录下。


    2. 上传Hadoop安装包到主节点

            将下载好的压缩包拖拽到远程终端软件 或 在远程终端软件中使用rz命令。


    3. 解压缩安装包到/export/server/目录中

    1. 1. 进入/export/server/目录:
    2. cd /export/server/
    3. 2. 解压到当前目录下:
    4. tar -zxvf hadoop-3.3.4.tar.gz

    4. 构建软链接

    ln -s /export/server/hadoop-3.3.4 hadoop

    三、部署HDFS集群

    0. 集群部署规划


    1. 进入hadoop安装包内

    cd hadoop

    Hadoop安装包的目录结构:

    现在是集群部署的配置阶段,我们着重于etc目录。


    2 进入etc目录下的hadoop目录

    cd /etc/hadoop

    接下来主要要对以下四个文件进行配置:


    3. 配置workers文件

            workers文件的作用是记录大数据集群中的从节点服务器。

    配置步骤:

    1. 1. 使用vim打开workers:
    2. vim workers
    3. 2. 按i进入插入模式
    4. 3. 删除原来的lockhoot
    5. 4. 写入:
    6. node1
    7. node2
    8. node3
    9. 5. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。


    4. 配置hadoop-env.sh文件

            hadoop-env.sh文件的作用是记录Hadoop在运行时会用到的一些环境变量。

    配置步骤:

    1. 1. 使用vim打开hadoop-env.sh:
    2. vim hadoop-env.sh
    3. 2. 按i进入插入模式
    4. 3. 找个空白的地方(最上面)写入:
    5. export JAVA_HOME=/export/server/jdk
    6. export HADOOP_HOME=/export/server/hadoop
    7. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    8. export HADOOP_LOG_DIR=$HADOOP_HOME/logs
    9. 4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。
    10. 说明:
    11. JAVA_HOME,指明JDK环境的位置在哪
    12. HADOOP_HOME,指明Hadoop安装位置
    13. HADOOP_CONF_DIR,指明Hadoop配置文件目录位置
    14. HADOOP_LOG_DIR,指明Hadoop运行日志目录位置
    15. 通过记录这些环境变量, 来指明上述运行时的重要信息


    5.配置core-site.xml文件

            该文件的作用是配置一些自定义设置,我们要在这里配置NameNode(主节点)的启动和缓冲区大小。

    配置步骤:

    1. 1. 使用vim打开core-site.xml:
    2. vim core-site.xml
    3. 2. 找到标签<configuration></configuration>
    4. 3. 按i进入插入模式,在标签中间写入:
    5. <property>
    6. <name>fs.defaultFS</name>
    7. <value>hdfs://node1:8020</value>
    8. </property>
    9. <property>
    10. <name>io.file.buffer.size</name>
    11. <value>131072</value>
    12. </property>
    13. 4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。
    14. 说明:
    15. 1.key:fs.defaultFS
    16. 含义:HDFS文件系统的网络通讯路径
    17. 值:hdfs://node1:8020
    18. 协议为hdfs://
    19. namenode(主节点)为node1
    20. namenode(主节点)通讯端口为8020
    21. 2.key:io.file.buffer.size
    22. 含义:io操作文件缓冲区大小
    23. 值:131072 bit
    24. 3.hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)
    25. 表明DataNode(从节点)将和node18020端口通讯,node1是NameNode(主节点)所在机器
    26. 此配置固定了node1必须启动NameNode(主节点)进程


    6.配置hdfs-site.xml文件

            该文件的作用也是配置一些自定义设置,我们要在这里配置:默认创建的文件权限、主节点数据的存储位置、NameNode(主节点)允许哪几个节点的DataNode(从节点)连接(即允许加入集群)、hdfs默认块大小、Namenode(主节点)处理的并发线程数、从DataNode(从节点)的数据存储目录。

    配置步骤:

    1. 1. 使用vim打开hdfs-site.xml:
    2. vim hdfs-site.xml
    3. 2. 找到标签<configuration></configuration>
    4. 3. 按i进入插入模式,在标签中间写入:
    5. <property>
    6. <name>dfs.datanode.data.dir.perm</name>
    7. <value>700</value>
    8. </property>
    9. <property>
    10. <name>dfs.namenode.name.dir</name>
    11. <value>/data/nn</value>
    12. </property>
    13. <property>
    14. <name>dfs.namenode.hosts</name>
    15. <value>node1,node2,node3</value>
    16. </property>
    17. <property>
    18. <name>dfs.blocksize</name>
    19. <value>268435456</value>
    20. </property>
    21. <property>
    22. <name>dfs.namenode.handler.count</name>
    23. <value>100</value>
    24. </property>
    25. <property>
    26. <name>dfs.datanode.data.dir</name>
    27. <value>/data/dn</value>
    28. </property>
    29. 4. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。
    30. 说明:
    31. 1.key:dfs.datanode.data.dir.perm
    32. 含义:hdfs文件系统,默认创建的文件权限设置
    33. 值:700,即:rwx------
    34. 2.key:dfs.namenode.name.dir
    35. 含义:NameNode(主节点)元数据的存储位置
    36. 值:/data/nn,在node1节点的/data/nn目录下
    37. 3.key:dfs.namenode.hosts
    38. 含义:NameNode(主节点)允许哪几个DataNode(从节点)连接(即允许加入集群)
    39. 值:node1、node2、node3,这三台服务器被授权
    40. 4.key:dfs.blocksize
    41. 含义:hdfs默认块大小
    42. 值:268435456256MB)
    43. 5.key:dfs.namenode.handler.count
    44. 含义:Namenode(主节点)处理的并发线程数
    45. 值:100,以100个并行度处理文件系统的管理任务
    46. 6.key:dfs.datanode.data.dir
    47. 含义:DataNode(从节点)的数据存储目录
    48. 值:/data/dn,即数据存放在node1、node2、node3,三台机器的/data/dn内


    7. 准备数据目录

            在之前的配置中,只是指定了主节点和从节点的数据放在哪个文件,但我们还没有真正的创建这些文件,现在我们就是要创建这些文件。

            在上一步中的配置中,我们把 namenode数据存放在node1虚拟机的/data/nn目录下;datanode数据存放在node1、node2、node3虚拟机的/data/dn目录下。

            所以我们要在node1虚拟机创建/data/nn目录和/data/dn目录;在node2、node3虚拟机创建/data/dn目录(不要少了data前面的/)。

    步骤:

    1. 1.在node1虚拟机:
    2. mkdir -p /data/nn
    3. mkdir -p /data/dn
    4. 2.在node2和node3虚拟机:
    5. mkdir -p /data/dn

    8. 分发Hadoop文件夹

            目前,已经基本完成Hadoop的配置操作,可以从node1将hadoop安装文件夹远程复制到node2、node3(通过scp命令)。

    步骤:

    1. 1. 在node1虚拟机执行如下命令
    2. cd /export/server
    3. scp -r hadoop-3.3.4 node2:`pwd`/
    4. scp -r hadoop-3.3.4 node3:`pwd`/
    5. 2. 在node2执行如下命令,为hadoop配置软链接
    6. ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
    7. 3. 在node3执行如下命令,为hadoop配置软链接
    8. ln -s /export/server/hadoop-3.3.4 /export/server/hadoop

    三、配置环境变量 

            为了方便我们操作Hadoop,可以将Hadoop的一些脚本、程序配置到PATH中(通过配置profile文件),方便后续使用。

    1. 修改/etc目录下的profile文件:

    1. 1. 使用vim打开/etc下的profile文件:
    2. vim /etc/profile
    3. 2. 按i进入插入模式,在末尾追加写入:
    4. export HADOOP_HOME=/export/server/hadoop
    5. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    6. 3. 按下Esc退出插入模式,按下Shift+:进入底行模式,按下wq!强制保存并退出。

    2. 启动上面的配置

    source /etc/profile

    3. 在node2和node3虚拟机中重复上面的步骤。

    四、为Hadoop用户授权

            到了这里,hadoop部署的准备工作基本完成,为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务。所以,现在需要对文件权限进行授权。


    1. 以root身份,在node1、node2、node3三台虚拟机上均执行如下命令:

    1. # 以root身份,在三台服务器上均执行
    2. chown -R hadoop:hadoop /data
    3. chown -R hadoop:hadoop /export

    2. 检查

    五、格式化HDFS文件系统

            前期准备全部完成,现在对整个文件系统执行初始化,以下命令在主节点虚拟机node1中执行即可。


    1. 格式化namenode

    1. 1. 在主节点虚拟机node1中切换到hadoop用户
    2. su - hadoop
    3. 2. 格式化namenode
    4. hadoop namenode -format

    这样表示格式化成功了


    2. 一键启动hdfs集群

    1. 1. 回到根目录
    2. cd
    3. 2. 一键启动hdfs集群
    4. start-dfs.sh

    3. 使用jps检查运行中的进程

    在终端中输入jps,如果显示内容像图片中的一样基本上表示整个配置都成功了:

    如果jps中没有Datanode,证明clusterID有问题:

    原因是多次格式化「大数据-0」虚拟机VMware安装、配置、使用、创建大数据集群教程会重新生成新的clusterID(集群ID)

    我们要做的是在主节点node1下找到正确的clusterID,然后更改所有从节点的clusterID。

    步骤:

    1. 1. 进入node1虚拟机下的/data/nn/current/目录
    2. cd /data/nn/current/
    3. 2. 打开VERSION文件
    4. vim VERSION
    5. 3. 复制clusterID
    6. 4. 退出,然后进入/data/dn/current/目录
    7. cd /data/dn/current/
    8. 5. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID
    9. 6. 进入node2虚拟机下的/data/dn/current/目录
    10. cd /data/dn/current/
    11. 7. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID
    12. 8. 进入node3虚拟机下的/data/dn/current/目录
    13. cd /data/dn/current/
    14. 9. 打开VERSION文件, 然后用刚才复制的内容替换这里的clusterID

    4. 查看HDFS WEBUI

            启动Hadoop后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。

    能够打开这个网址,且Live Nodes 为3,就表示我们的Hadoop部署完全成功了!

    六、拍摄快照保存配置好的虚拟机 

    0. 为什么需要拍摄快照?

            拍快照相当于给当前虚拟机的配置做一个备份,将来有问题,直接按照快照还原虚拟机即可,不需要删除再重新配置。


    1. 在VMware将所有虚拟机关机


    2. 拍摄快照


    3. 如何使用快照恢复?

    七、启动和关闭HDFS集群

    Hadoop HDFS组件内置了HDFS集群的一键启停脚本。

    1. 一键启动HDFS集群

    $HADOOP_HOME/sbin/start-dfs.sh

    2. 一键关闭HDFS集群 

    $HADOOP_HOME/sbin/stop-dfs.sh

    关闭虚拟机前一定要先关闭HDFS集群,然后用 init 0 断开Xshell等远程连接!


    ------------------------END-------------------------

    才疏学浅,谬误难免,欢迎各位批评指正。

  • 相关阅读:
    如何理解pytorch中的“with torch.no_grad()”?
    12. 测试搭建百万并发项目
    网安学习-Python3
    C++类型转换
    十一、组合API(1)
    深入了解线程:并发编程的核心要点和应用
    小程序进阶-inline、block和inline-block的区别与联系
    C语言之字符函数总结(全部!),一篇记住所有的字符函数
    NOIP2011-2018提高组解题报告
    matlab-day05
  • 原文地址:https://blog.csdn.net/look_outs/article/details/133040940