• 在Linux中进行hadoop集群搭建


    公网IP为x.x.x.x、y.y.y.y和z.z.z.z并装有Centos8的服务器上进行hadoop集群搭建,都安装hadoop-3.1.3和server-jre-8u202-linux-x64。

    环境准备(三台服务器都一样)

    第一步,创建统一工作目录。

    # 软件安装路径

    命令:mkdir -p /usr/local/src/server/

    # 数据存储路径

    命令:mkdir -p /usr/local/src/data/

    # 安装包存放路径

    命令:mkdir -p /usr/local/src/software/

    第二步,下载server-jre-8u202-linux-x64.tar.gz安装包。

    到地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html下载server-jre-8u202-linux-x64.tar.gz安装包。然后使用WinSCP将安装包上传到/usr/local/src/software文件夹中。或者也可以使用wget命令下载。

    命令:cd /usr/local/src/software

    wget https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html/jre-8u202-linux-x64.tar.gz

    第三步,解压server-jre-8u202-linux-x64.tar.gz安装包。

    命令:cd /usr/local/src/software

    tar -zxvf server-jre-8u202-linux-x64.tar.gz -C /usr/local/src/server

    第四步,配置环境变量。

    配置/etc/profile文件,在文件添加下面的代码:

    1. export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
    2. export JRE_HOME=$JAVA_HOME/jre
    3. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    # 刷新profile文件

    命令:source /etc/profile

    第五步,测试server-jre是否配置成功。

    # 查看jdk版本

    命令:java -version

    若结果显示server-jre的版本,则说明server-jre配置成功。

    第六步,关闭防火墙。

    为了可以让本地的机器可以通过Web网页访问集群资源,为了防止在运行集群的时候出现集群不可访问的状况,需要关闭防火墙。

    命令:systemctl stop firewalld

    # 开机时禁用防火墙

    命令:systemctl disable firewalld

    第七步,各自修改主机名,配置IP地址映射。

    命令:hostnamectl set-hostname node1

    hostnamectl set-hostname node2

    hostnamectl set-hostname node3

    对三台主机的IP地址进行映射,可以方便后续的配置,同时也方便对集群进行通信,三台机器同样操作。

    在/etc/hosts文件中加入下面的代码:

    1. x.x.x.x  node1
    2. y.y.y.y    node2
    3. z.z.z.z     node3

    第八步,配置免密登录。

    # 在~目录下执行,生成密钥

    命令:cd

    ssh-keygen -t rsa  # 按四下enter

    cd /root/.ssh/

    cp id_rsa.pub authorized_keys

    # 将node1的密钥拷到其他服务器上

    ssh-copy-id -i node2

    ssh-copy-id -i node3

    第九步,集群时间同步。

    命令:yum -y install ntpdate

    ntpdate ntp4.aliyun.com

    安装Hadoop(三台服务器都一样)

    第一步,集群规划。

    NameNode=NN          DataNode=DN        SecondaryNameNode=SNN

    NodeManager=NM     ResourceManager=RM

    HDFS集群—主角色:NN   从角色:DN   主角色辅助角色:SNN

    YARN集群—主角色:RM   从角色:NM

    1. 框架          node1      node2       node3
    2. HDFS        NN、DN        DN     SNN、DN
    3. YARN          NM        RM、NM        NM

    Hadoop集群包括两个集群:HDFS集群和YARN集群。

    两个集群都是标准的主从架构集群。

    逻辑上分离:两个集群互相之间没有依赖、互不影响。

    物理上在一起:某些角色进程往往部署在同一台物理服务器上。

    MapReduce是计算框架、代码层面的组件,没有集群之说。

    角色规划的准则:

    根据软件工作特性和服务器硬件资源情况合理分配。

    角色规划注意事项:

    资源上有抢夺冲突的,尽量不要部署在一起。

    工作上需要互相配合的,尽量部署在一起。

    第二步,下载hadoop-3.1.3。

    登录网址:https://archive.apache.org/dist/hadoop/common/

    下载hadoop-3.1.3.tar.gz。也可以使用命令下载。

    命令:cd /usr/local/src/software

    wget https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz

    第三步,上传、解压tar.gz压缩包。

    命令:cd /usr/local/src/software

    tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local/src/server

    第四步,配置环境变量。

    在/etc/profile文件添加下面的代码:

    1. export HADOOP_HOME=/usr/local/src/server/hadoop-3.1.3
    2. export PATH=$PATH:$HADOOP_HOME/bin
    3. export PATH=$PATH:$HADOOP_HOME/sbin

    # 使环境变量生效

    命令:source /etc/profile

    # 测试是否配置成功

    命令:hadoop version

    如果结果显示“Hadoop 3.1.3”,则说明hadoop配置成功。

    集群配置

    配置文件在/usr/local/src/server/hadoop-3.1.3/etc/hadoop中。

    第一步,对node1中的Hadoop自定义配置文件进行配置。

    1)创建目录

    命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp

    mkdir /usr/local/src/server/hadoop-3.1.3/dfs

    2)配置hadoop-env.sh。

    在hadoop-env.sh文件中加入下面的代码:

    1. export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
    2. # 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
    3. export HDFS_NAMENODE_USER=root
    4. export HDFS_DATANODE_USER=root
    5. export HDFS_SECONDARYNAMENODE_USER=root
    6. export YARN_RESOURCEMANAGER_USER=root
    7. export YARN_NODEMANAGER_USER=root

    3)配置core-site.xml

    在core-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <property>
    3.   <name>fs.defaultFS</name>
    4.   <value>hdfs://node1:9000</value>
    5. </property>
    6. <!-- 配置Hadoop存储数据目录,默认/tmp/hadoop-${user.name} -->
    7. <property>
    8.    <name>hadoop.tmp.dir</name>
    9.  <value>file:/usr/local/src/server/hadoop-3.1.3/tmp</value>
    10. </property>
    11. <!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
    12. <property>
    13.    <name>io.file.buffer.size</name>
    14.    <value>131072</value>
    15. </property>
    16. <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
    17. <property>
    18.    <name>fs.trash.interval</name>
    19.    <value>10080</value>
    20. </property>
    21. </configuration>

    4)配置hdfs-site.xml

    在hdfs-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- namenode存储hdfs名字的空间的元数据文件目录 -->
    3. <property>
    4. <name>dfs.namenode.name.dir</name>                     
    5. <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/name</value>
    6. </property>
    7. <!-- datanode上的一个数据块的物理的存储位置文件 -->
    8. <property>
    9. <name>dfs.datanode.data.dir</name> <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/data</value>
    10. </property>
    11. <!-- 指定HDFS保存数据副本的数量 -->
    12. <property>
    13. <name>dfs.replication</name>
    14. <value>3</value>
    15. </property>
    16. <!-- 设置一个block的大小:128M-->
    17. <property>
    18. <name>dfs.blocksize</name>
    19. <value>134217728</value>
    20. </property>
    21. <!-- 定义namenode界面的访问地址 -->
    22. <property>
    23. <name>dfs.http.address</name>
    24. <value>node1:50070</value>
    25. </property>
    26. <!-- 设置HDFS的文件权限-->
    27. <property>
    28. <name>dfs.permissions</name>
    29. <value>false</value>
    30. </property>
    31. <!-- 指定DataNode的节点配置文件 -->
    32. <property>
    33. <name>dfs.hosts</name>
    34. <value>/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers</value>
    35. </property>
    36. </configuration>

    5)配置workers。

    在workers文件中加入下面的代码:

    1. node1
    2. node2
    3. node3

    注意:不要有多余的换行和空格

    6)mapred-site.xml配置

    在mapred-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- 指定 MapReduce 程序运行在 Yarn 上,表示MapReduce使用yarn框架 -->
    3. <property>
    4. <name>mapreduce.framework.name</name>
    5. <value>yarn</value>
    6. </property>
    7. <!-- 开启MapReduce小任务模式 -->
    8. <property>
    9. <name>mapreduce.job.ubertask.enable</name>
    10. <value>true</value>
    11. </property>
    12. <!-- 设置历史任务的主机和端口 -->
    13. <property>
    14. <name>mapreduce.jobhistory.address</name>
    15. <value>node1:10020</value>
    16. </property>
    17. <!-- 设置网页访问历史任务的主机和端口 -->
    18. <property>
    19. <name>mapreduce.jobhistory.webapp.address</name>
    20. <value>node1:19888</value>
    21. </property>
    22. </configuration>

    7)配置yarn-site.xml

    在yarn-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- Site specific YARN configuration properties -->
    3. <!-- NodeManager获取数据的方式shuffle -->
    4. <property>
    5. <name>yarn.nodemanager.aux-services</name>
    6. <value>mapreduce_shuffle</value>
    7. </property>
    8. <!-- yarn的web访问地址 -->
    9. <property>
    10. <description>
    11. The http address of the RM web application.
    12. If only a host is provided as the value,the webapp will be served on a random port.
    13. </description>
    14. <name>yarn.resourcemanager.webapp.address</name>
    15.    <value>${yarn.resourcemanager.hostname}:8088</value>
    16. </property>
    17. <property>
    18. <description>
    19. The https address of the RM web application.
    20. If only a host is provided as the value,the webapp will be served on a random port.
    21. </description>
    22.    <name>yarn.resourcemanager.webapp.https.address</name>
    23.    <value>${yarn.resourcemanager.hostname}:8090</value>
    24. </property>
    25. <!-- 开启日志聚合功能,方便我们查看任务执行完成之后的日志记录 -->
    26. <property>
    27. <name>yarn.log-aggregation-enable</name>
    28. <value>true</value>
    29. </property>
    30. <!-- 设置聚合日志在hdfs上的保存时间 -->
    31. <property>
    32. <name>yarn.log-aggregation.retain-seconds</name>
    33. <value>604800</value>
    34. </property>
    35. </configuration>

    第二步,对node2中的Hadoop自定义配置文件进行配置。

    1)创建目录

    命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp

    mkdir /usr/local/src/server/hadoop-3.1.3/dfs

    2)配置hadoop-env.sh。

    在hadoop-env.sh文件中加入下面的代码:

    1. export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
    2. # 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
    3. export HDFS_NAMENODE_USER=root
    4. export HDFS_DATANODE_USER=root
    5. export HDFS_SECONDARYNAMENODE_USER=root
    6. export YARN_RESOURCEMANAGER_USER=root
    7. export YARN_NODEMANAGER_USER=root

    3)配置core-site.xml

    在core-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <property>
    3. <name>fs.defaultFS</name>
    4. <value>hdfs://node2:9000</value>
    5. </property>
    6. <!-- 配置Hadoop存储数据目录,默认/tmp/hadoop-${user.name} -->
    7. <property>
    8. <name>hadoop.tmp.dir</name>
    9.   <value>file:/usr/local/src/server/hadoop-3.1.3/tmp</value>
    10. </property>
    11. <!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
    12. <property>
    13. <name>io.file.buffer.size</name>
    14. <value>131072</value>
    15. </property>
    16. <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
    17. <property>
    18. <name>fs.trash.interval</name>
    19. <value>10080</value>
    20. </property>
    21. </configuration>

    4)配置hdfs-site.xml

    在hdfs-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- namenode存储hdfs名字的空间的元数据文件目录 -->
    3. <property>
    4. <name>dfs.namenode.name.dir</name>           
    5. <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/name</value>
    6. </property>
    7. <!-- datanode上的一个数据块的物理的存储位置文件 -->
    8. <property>
    9. <name>dfs.datanode.data.dir</name>         
    10. <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/data</value>
    11. </property>
    12. <!-- 指定HDFS保存数据副本的数量 -->
    13. <property>
    14. <name>dfs.replication</name>
    15. <value>3</value>
    16. </property>
    17. <!-- 设置一个block的大小:128M-->
    18. <property>
    19. <name>dfs.blocksize</name>
    20. <value>134217728</value>
    21. </property>
    22. <!-- 设置HDFS的文件权限-->
    23. <property>
    24. <name>dfs.permissions</name>
    25. <value>false</value>
    26. </property>
    27. <!-- 指定DataNode的节点配置文件 -->
    28. <property>
    29. <name>dfs.hosts</name>
    30. <value>/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers</value>
    31. </property>
    32. </configuration>

    5)配置workers。

    在workers文件中加入下面的代码:

    1. node1
    2. node2
    3. node3

    注意:不要有多余的换行和空格

    6)mapred-site.xml配置

    在mapred-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- 指定MapReduce程序运行在Yarn上,表示MapReduce使用yarn框架 -->
    3. <property>
    4. <name>mapreduce.framework.name</name>
    5. <value>yarn</value>
    6. </property>
    7. <!-- 开启MapReduce小任务模式 -->
    8. <property>
    9. <name>mapreduce.job.ubertask.enable</name>
    10. <value>true</value>
    11. </property>
    12. <!-- 设置历史任务的主机和端口 -->
    13. <property>
    14. <name>mapreduce.jobhistory.address</name>
    15. <value>node2:10020</value>
    16. </property>
    17. <!-- 设置网页访问历史任务的主机和端口 -->
    18. <property>
    19. <name>mapreduce.jobhistory.webapp.address</name>
    20. <value>node2:19888</value>
    21. </property>
    22. </configuration>

    7)配置yarn-site.xml

    在yarn-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- Site specific YARN configuration properties -->
    3. <!-- NodeManager获取数据的方式shuffle -->
    4. <property>
    5. <name>yarn.nodemanager.aux-services</name>
    6. <value>mapreduce_shuffle</value>
    7. </property>
    8. <!-- 指定YARN的ResourceManager的地址 -->
    9. <property>
    10. <name>yarn.resourcemanager.hostname</name>
    11. <value>node2</value>
    12. </property>
    13. <!-- yarn的web访问地址 -->
    14. <property>
    15. <description>
    16. The http address of the RM web application.
    17. If only a host is provided as the value,the webapp will be served on a random port.
    18. </description>
    19. <name>yarn.resourcemanager.webapp.address</name>
    20. <value>${yarn.resourcemanager.hostname}:8088</value>
    21. </property>
    22. <property>
    23. <description>
    24. The https address of the RM web application.
    25. If only a host is provided as the value,the webapp will be served on a random port.
    26. </description>
    27. <name>yarn.resourcemanager.webapp.https.address</name>
    28. <value>${yarn.resourcemanager.hostname}:8090</value>
    29. </property>
    30. <!-- 开启日志聚合功能,方便我们查看任务执行完成之后的日志记录 -->
    31. <property>
    32. <name>yarn.log-aggregation-enable</name>
    33. <value>true</value>
    34. </property>
    35. <!-- 设置聚合日志在hdfs上的保存时间 -->
    36. <property>
    37. <name>yarn.log-aggregation.retain-seconds</name>
    38. <value>604800</value>
    39. </property>
    40. </configuration>

    第三步,对node3中的Hadoop自定义配置文件进行配置。

    1)创建目录

    命令:mkdir /usr/local/src/server/hadoop-3.1.3/tmp

    mkdir /usr/local/src/server/hadoop-3.1.3/dfs

    2)配置hadoop-env.sh。

    在hadoop-env.sh文件中加入下面的代码:

    1. export JAVA_HOME=/usr/local/src/server/jdk1.8.0_202
    2. # 在文件末尾加入下面的代码,设置用户以执行对应角色shell命令
    3. export HDFS_NAMENODE_USER=root
    4. export HDFS_DATANODE_USER=root
    5. export HDFS_SECONDARYNAMENODE_USER=root
    6. export YARN_RESOURCEMANAGER_USER=root
    7. export YARN_NODEMANAGER_USER=root

    3)配置core-site.xml

    在core-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <property>
    3. <name>fs.defaultFS</name>
    4. <value>hdfs://node3:9000</value>
    5. </property>
    6. <!-- 配置Hadoop存储数据目录,默认/tmp/hadoop-${user.name} -->
    7. <property>
    8. <name>hadoop.tmp.dir</name>
    9. <value>file:/usr/local/src/server/hadoop-3.1.3/tmp</value>
    10. </property>
    11. <!--  缓冲区大小,实际工作中根据服务器性能动态调整 -->
    12. <property>
    13. <name>io.file.buffer.size</name>
    14. <value>131072</value>
    15. </property>
    16. <!--  开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 -->
    17. <property>
    18. <name>fs.trash.interval</name>
    19. <value>10080</value>
    20. </property>
    21. </configuration>

    4)配置hdfs-site.xml

    在hdfs-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- namenode存储hdfs名字的空间的元数据文件目录 -->
    3. <property>
    4. <name>dfs.namenode.name.dir</name>                   
    5. <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/name</value>
    6. </property>
    7. <!-- datanode上的一个数据块的物理的存储位置文件 -->
    8. <property>
    9. <name>dfs.datanode.data.dir</name>
    10. <value>file:/usr/local/src/server/hadoop-3.1.3/dfs/data</value>
    11. </property>
    12. <!-- 指定HDFS保存数据副本的数量 -->
    13. <property>
    14. <name>dfs.replication</name>
    15. <value>3</value>
    16. </property>
    17. <!-- 设置一个block的大小:128M-->
    18. <property>
    19. <name>dfs.blocksize</name>
    20. <value>134217728</value>
    21. </property>
    22. <!-- 定义secondarynamenode的通信地址 -->
    23. <property>
    24. <name>dfs.namenode.secondary.http-address</name>
    25. <value>node3:50071</value>
    26. </property>
    27. <!-- 设置HDFS的文件权限-->
    28. <property>
    29. <name>dfs.permissions</name>
    30. <value>false</value>
    31. </property>
    32. <!-- 指定DataNode的节点配置文件 -->
    33. <property>
    34. <name>dfs.hosts</name>
    35. <value>/usr/local/src/server/hadoop-3.1.3/etc/hadoop/workers</value>
    36. </property>
    37. </configuration>

    5)配置workers。

    在workers文件中加入下面的代码:

    1. node1
    2. node2
    3. node3

    注意:不要有多余的换行和空格

    6)mapred-site.xml配置

    在mapred-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- 指定 MapReduce 程序运行在 Yarn 上,表示MapReduce使用yarn框架 -->
    3. <property>
    4. <name>mapreduce.framework.name</name>
    5. <value>yarn</value>
    6. </property>
    7. <!-- 开启MapReduce小任务模式 -->
    8. <property>
    9. <name>mapreduce.job.ubertask.enable</name>
    10. <value>true</value>
    11. </property>
    12. <!-- 设置历史任务的主机和端口 -->
    13. <property>
    14. <name>mapreduce.jobhistory.address</name>
    15. <value>node3:10020</value>
    16. </property>
    17. <!-- 设置网页访问历史任务的主机和端口 -->
    18. <property>
    19. <name>mapreduce.jobhistory.webapp.address</name>
    20. <value>node3:19888</value>
    21. </property>
    22. </configuration>

    7)配置yarn-site.xml

    在yarn-site.xml文件中加入下面的代码:

    1. <configuration>
    2. <!-- Site specific YARN configuration properties -->
    3. <!-- NodeManager获取数据的方式shuffle -->
    4. <property>
    5. <name>yarn.nodemanager.aux-services</name>
    6. <value>mapreduce_shuffle</value>
    7. </property>
    8. <!-- yarn的web访问地址 -->
    9. <property>
    10. <description>
    11. The http address of the RM web application.
    12. If only a host is provided as the value,the webapp will be served on a random port.
    13. </description>
    14. <name>yarn.resourcemanager.webapp.address</name>
    15. <value>${yarn.resourcemanager.hostname}:8088</value>
    16. </property>
    17. <property>
    18. <description>
    19. The https address of the RM web application.
    20. If only a host is provided as the value,the webapp will be served on a random port.
    21. </description>
    22. <name>yarn.resourcemanager.webapp.https.address</name>
    23. <value>${yarn.resourcemanager.hostname}:8090</value>
    24. </property>
    25. <!-- 开启日志聚合功能,方便我们查看任务执行完成之后的日志记录 -->
    26. <property>
    27. <name>yarn.log-aggregation-enable</name>
    28. <value>true</value>
    29. </property>
    30. <!-- 设置聚合日志在hdfs上的保存时间 -->
    31. <property>
    32. <name>yarn.log-aggregation.retain-seconds</name>
    33. <value>604800</value>
    34. </property>
    35. </configuration>

    集群启动

    # 注意:如果集群是第一次启动,需要在Namenode所在节点格式化NameNode,非第一次不用执行格式化 Namenode 操作。

    命令:hadoop namenode -format

    # 在node1,node2,node3上分别启动HDFS、YARN

    命令:cd /usr/local/src/server/hadoop-3.1.3/sbin

    ./start-dfs.sh   (HDFS)

    ./start-yarn.sh   (YARN)

    # 在node1,node2,node3上查看集群的hadoop进程

    命令:jps

    若在node1,node2,node3上分别显示下面的结果,则说明启动集群启动成功。

      

    # 在node1,node2,node3上分别停止HDFS、YARN

    命令:cd /usr/local/src/server/hadoop-3.1.3/sbin

    ./stop-dfs.sh  (HDFS)

    ./stop-yarn.sh  (YARN)

  • 相关阅读:
    STM32CubeMX配置生成FreeRTOS项目
    Vagrant 搭建虚拟机环境
    用户侧功能
    JAVA概述
    PCL 最小中值平方法拟合平面
    论文解读:基于迁移移学习的深卷积神经网络,用于从蛋白质主要序列预测与白血病相关的磷酸化位点
    通过函数来提交表单数据,并且携带参数
    BurpSuit详细安装教程(含有免费安装包)
    一个登录点两个逻辑漏洞-edusrc
    力扣刷题(2022-6-28)
  • 原文地址:https://blog.csdn.net/weixin_43268590/article/details/126540728