当前位置:   article > 正文

阿里云ECS上搭建Hadoop分布式环境(会更新)_云服务器ecs安装hadoop

云服务器ecs安装hadoop

1.Java的安装

使用命令行工具安装(需要公网ip为60.205.163.33的实例提前启动nginx服务)

  1. # 使用wget命令从指定的IP地址下载JDK安装包到/home/jdk目录
  2. # -P 参数用于指定下载文件的保存路径,这里是 /home/jdk
  3. # 请注意,如果IP地址发生变化,需要相应地更新命令中的IP地址部分
  4. wget http://60.205.163.33/download/jdk/jdk-8u261-linux-x64.tar.gz -P /home/jdk

1.3 解压jdk、配置、检验

step1:在云实例中创建一个存放jdk解压后的目录,

mkdir -p /opt/jdk1.8.0

step2:将 jre-8u261-linux-x64.tar.gz 解压到 /opt/jdk1.8.0 目录下

  1. #将文件 jdk-8u261-linux-x64.tar.gz 从 /home/jdk/ 目录解压到 /opt/jdk1.8.0 目录
  2. tar -zxvf /home/jdk/jdk-8u261-linux-x64.tar.gz -C /opt/jdk1.8.0

step3:勾选上显示/隐藏实例菜单栏:

step4:

检验是否解压成功:左侧查看 /opt/jdk1.8.0 目录,是否和图片中的目录一致。

step5:修改环境变量

vim /etc/profile

在profile文件中添加以下内容:(第一行路径需根据自己的存放路径修改)

  1. # 设置环境变量 JAVA_HOME 指向 JDK 的安装路径
  2. # 这里假设 JDK 安装在 /opt/jdk1.8.0/jdk1.8.0_261
  3. export JAVA_HOME=/opt/jdk1.8.0/jdk1.8.0_261
  4. # 设置环境变量 JRE_HOME 指向 JAVA_HOME 下的 jre 目录
  5. # 这通常是 JDK 的一部分,包含 Java 运行时环境
  6. export JRE_HOME=$JAVA_HOME/jre
  7. # 设置 CLASSPATH 环境变量,它告诉 Java 程序在哪里查找类和库
  8. # . 表示当前目录,$JAVA_HOME/lib 和 $JRE_HOME/lib 包含 Java 核心库
  9. # 使用 : 分隔不同的路径
  10. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  11. # 更新 PATH 环境变量,添加 Java 的 bin 目录到系统路径中
  12. # 这样可以在命令行中直接运行 java 和 javac 等命令,无需指定完整路径
  13. # $JAVA_HOME/bin 和 $JRE_HOME/bin 包含 Java 的命令行工具
  14. # $PATH 是系统原有的路径,确保其他程序仍然可以正常访问
  15. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存并退出。

step6:继续输入以下命令,使profile文件的修改生效:

source /etc/profile

step7:测试Java的安装是否成功?

java -version

输出结果如下图所示,表示Java安装成功

2.Hadoop的安装

2.1  修改主机名

(1)在安装之前先修改一下每个人的主机名,修改的名称要求如下:主机(hadoop-master-“姓名拼音首字母")、从机1(hadoop-slave1-“姓名拼音首字母")、从机2(hadoop-slave2-“姓名拼音首字母"),下面涉及到的主机名需都保持一致。

修改方式如下:

  1. #新主机名按照要求命名
  2. sudo echo 新主机名 > /etc/hostname
  3. #检验是否修改成功,若一下命令返回新主机名,则代表成功
  4. cat /etc/hostname
  5. #若永久性修改,则需要使用以下命令重新启动,重新启动的过程需要等一会
  6. reboot

再次判断,修改成功左侧提示命令行则显示新主机名

(2)配置主机名到 IP 地址的映射:配置文件中通常使用主机名而不是 IP 地址。为了确保集群中的节点可以通过主机名相互通信,您需要:在每个节点的 /etc/hosts 文件中配置主机名到 IP 地址的映射。具体方式如下:

vim /etc/hosts

在这个 /etc/hosts 文件中,您可以添加或修改主机名到 IP 地址(选择私网ip,更安全)的映射。(每个节点都需要修改)

  1. # 127.0.0.1 是本地主机的回环地址,用于访问本地主机上的服务。
  2. # 172.22.196.64、172.22.196.65 和 172.22.196.66 是集群中节点的 IP 地址,分别对应 hadoop-master、hadoop-slave1 和 hadoop-slave2 主机名。
  3. 127.0.0.1 localhost
  4. 172.22.196.64 hadoop-master
  5. 172.22.196.65 hadoop-slave1
  6. 172.22.196.66 hadoop-slave2
  1. 在云实例中/home目录下新建一个hadoop文件夹(命令方式和图标方式均可),存放hadoop安装包。命令方式如下:mkdir -p /home/hadoop
  2. 同Java的安装方式,将hadoop安装包从本地上传至云实例/home/hadoop目录中
    wget http://60.205.163.33/download/hadoop/hadoop-3.2.4.tar.gz -P /home/hadoop
  3. 返回上一层目录,再创建一个存放hadoop解压后的目录

    1. cd
    2. mkdir -p /opt/hadoop3.2.4
  4. 解压:

    tar -zxvf /home/hadoop/hadoop-3.2.4.tar.gz -C /opt/hadoop3.2.4
  5. 配置hadoop环境

    vim /etc/profile
  6. 在profile文件中添加以下内容:(原理同java)

    1. export HADOOP_HOME=/opt/hadoop3.2.4/hadoop-3.2.4
    2. export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
    3. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    4. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  7. 添加后的效果如下图所示:
  8. 保存退出使profile文件生效

    source /etc/profile
  9. 查看是否安装成功,命令及输出结果如下:

    hadoop version

  10. 配置HDFS集群,执行以下命令,修改配置文件yarn-env.sh和hadoop-env.sh。(更方面)

    1. echo "export JAVA_HOME=/opt/jdk1.8.0/jdk1.8.0_261" >> /opt/hadoop3.2.4/hadoop-3.2.4/etc/hadoop/yarn-env.sh
    2. echo "export JAVA_HOME=/opt/jdk1.8.0/jdk1.8.0_261" >> /opt/hadoop3.2.4/hadoop-3.2.4/etc/hadoop/hadoop-env.sh
  11. 将Hadoop守护进程的用户设置为root,具体修改方式如下:

    1. ​​​​​​​cd /opt/hadoop3.2.4/hadoop-3.2.4/etc/hadoop
    2. vim hadoop-env.sh
    3. # 在hadoop-env.sh文件最下面添加如下内容
    4. export HDFS_NAMENODE_USER=root
    5. export HDFS_DATANODE_USER=root
    6. export HDFS_SECONDARYNAMENODE_USER=root
    7. export YARN_RESOURCEMANAGER_USER=root
    8. export YARN_NODEMANAGER_USER=root
  12. 修改hadoop的配置信息,主要是在/opt/hadoop3.2.4/hadoop-3.2.4/etc/hadoop文件夹中的几个,具体修改内容如下(目录部分需要根据自己的安装位置进行修改):

    1. #在 /opt/hadoop3.2.4/hadoop-3.2.4目录下新建一个tmp文件夹
    2. cd /opt/hadoop3.2.4/hadoop-3.2.4/etc/hadoop
    3. mkdir tmp
    vim workers

    在workers文件中添加如下内容:(对照你的主机名修改)

    1. hadoop-master
    2. hadoop-slave1
    3. hadoop-slave2

    同上,在core-site.xml文件中添加如下内容:(注意<configuration>不要重复添加),(此处hadoop-master需要修改为你们组的主节点主机名

    1. <configuration>
    2. <property>
    3. <name>hadoop.tmp.dir</name>
    4. <value>file:/opt/hadoop3.2.4/hadoop-3.2.4/tmp</value>
    5. </property>
    6. <property>
    7. <name>fs.defaultFS</name>
    8. <value>hdfs://hadoop-master:9000</value>
    9. </property>
    10. </configuration>

    同上,在hdfs-site.xml文件中添加如下内容:(注意<configuration>不要重复添加)(此处hadoop-master需要修改为你们组的主节点主机名

    1. <configuration>
    2. <property>
    3. <name>dfs.replication</name>
    4. <value>2</value>
    5. </property>
    6. <property>
    7. <name>dfs.namenode.secondary.http-address</name>
    8. <value>hadoop-master:50090</value>
    9. </property>
    10. <property>
    11. <name>dfs.namenode.name.dir</name>
    12. <value>file:/opt/hadoop3.2.4/hadoop-3.2.4/tmp/dfs/name</value>
    13. </property>
    14. <property>
    15. <name>dfs.datanode.data.dir</name>
    16. <value>file:/opt/hadoop3.2.4/hadoop-3.2.4/tmp/dfs/data</value>
    17. </property>
    18. </configuration>

    同上,在mapred-site.xml文件中添加如下内容:(注意<configuration>不要重复添加)(此处hadoop-master需要修改为你们组的主节点主机名

    1. <configuration>
    2. <property>
    3. <name>mapreduce.framework.name</name>
    4. <value>yarn</value>
    5. </property>
    6. <property>
    7. <name>mapreduce.jobhistory.address</name>
    8. <value>hadoop-master:10020</value>
    9. </property>
    10. <property>
    11. <name>mapreduce.jobhistory.webapp.address</name>
    12. <value>hadoop-master:19888</value>
    13. </property>
    14. </configuration>

    同上,在yarn-site.xml文件中添加如下内容:(注意<configuration>不要重复添加)(此处hadoop-master需要修改为你们组的主节点主机名

    1. <configuration>
    2. <property>
    3. <name>yarn.resourcemanager.hostname</name>
    4. <value>hadoop-master</value>
    5. </property>
    6. <property>
    7. <name>yarn.nodemanager.aux-services</name>
    8. <value>mapreduce_shuffle</value>
    9. </property>
    10. <property>
    11. <name>yarn.log-aggregation-enable</name>
    12. <value>true</value>
    13. </property>
    14. <property>
    15. <name>yarn.nodemanager.log-dirs</name>
    16. <value>${yarn.log.dir}/userlogs</value>
    17. </property>
    18. </configuration>
  13. 其他两台也需要进行以上Java、Hadoop所有的安装配置工作。
  14. 【选择一人一组的同学】:由于阿里云不支持在现有实例上直接更换操作系统镜像(镜像相当于对已配置好的系统进行复制,然后粘贴到新系统),需要新建实例才能镜像,所以建议大家还是采用在另一个实例中再做一遍的方法(并非完全一模一样,如只需ssh连接被连接就行,无需再生成SSH公钥和私钥,建议看完下面的3.Hadoop的ssh连接之后再回来做这里。
    关于另一实例中如何获取主机中的Java、Hadoop安装包,需要建立好两台实例之间的ssh连接之后,通过在主机中输入以下命令将Java、Hadoop安装包传输至另一个实例中:(username@remote_instance_ip需要替换),验证传输成功后,即可继续完成安装配置等工作。
    1. # 通过 SSH 协议来复制本地目录 /home/jdk 到远程实例的 /home/jdk 目录,该目录下是java的安装包
    2. scp -r /home/jdk username@remote_instance_ip:/home/jdk
    3. # /home/hadoop目录下是hadoop的安装包
    4. scp -r /home/hadoop username@remote_instance_ip:/home/hadoop
    5. #命令参数解释如下:
    6. #-r:表示递归复制,用于目录的复制。
    7. #/home/jdk:源路径,你的本地机器上的jdk目录路径。
    8. #username@remote_instance_ip:目标机器,其中 username 是你在远程实例上的用户名,#remote_instance_ip 是远程实例的IP地址。
    9. #/home/jdk:目标路径,表示文件或目录将被复制到远程机器的这个路径下。

3.Hadoop的ssh连接、测试与启动

  1. 【更新】建立同区域(例如:同杭州)不同账号下不同vpc(虚拟共有私网)私网ip的对等连接,具体方式参考:通过VPC对等连接方式,实现阿里云不同账号下的VPC内网网络互通

  2. master主机上生成SSH公钥和私钥(其他两台从节点主机不用)

    在终端中执行以下命令:

    ssh-keygen -t rsa

    这将在你的用户主目录下的.ssh文件夹(如~/.ssh)中创建id_rsa(私钥)和id_rsa.pub(公钥)两个文件。

  3. 将公钥复制到远程机器

    使用ssh-copy-id命令将公钥添加到主机master和远程机器slave1和slave2(该命令需执行三遍)。这将添加你的公钥到远程主机的~/.ssh/authorized_keys文件中。

    ssh-copy-id username@remote-host

    请将username替换为你的远程主机上的用户名,将remote-host替换为远程主机的IP地址或主机名。

  4. 测试SSH连接

    通过执行以下命令来测试你的SSH连接:

    ssh username@remote-host

    如果配置正确,你将能够在不需要密码的情况下登录到远程主机。

  5. Hadoop的启动

    1. # 格式化Hadoop的NameNode
    2. # 该命令会清空HDFS的元数据目录并重新初始化文件系统
    3. # 仅在首次设置HDFS时使用,已有数据的情况下运行会导致数据丢失
    4. hdfs namenode -format
    5. # 启动HDFS守护进程
    6. # 该脚本会启动NameNode和DataNode,以便HDFS开始运行
    7. start-dfs.sh
    8. # 启动YARN守护进程
    9. # 该脚本会启动ResourceManager和NodeManager,以便YARN开始管理集群资源和任务调度
    10. start-yarn.sh
    11. # 查看当前用户下运行的所有Java进程
    12. # 该命令用于确认各个Hadoop守护进程(如NameNode、DataNode、ResourceManager、NodeManager等)是否正在运行
    13. jps
  6. Hadoop的关闭(不调试的时候记得停止,下次重新启动不容易出现问题

    1. #关闭
    2. stop-dfs.sh
    3. stop-yarn.sh

4.网页形式的查看方式

  1. HDFS集群的网页查看方式:

      访问地址:  公网ip:9870(Hadoop安装版本不一致,访问端口也不一致)

能成功访问到的界面如下:

  1. YARN网页查看方式:

     访问地址:    公网ip:8088

5.出现的问题及解决方式:

(1)安全组访问端口需提前添加,有9000,50090、10020等实验中涉及的端口,或者直接打开所有的端口(这种方式便于做实践,但不安全),如下图所示:

             

(2)访问页面没响应,需关闭防火墙。命令如下:

systemctl stop firewalld
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/742375
推荐阅读
相关标签
  

闽ICP备14008679号