当前位置:   article > 正文

CentOS中Hadoop的安装配置简略教程_centos安装hadoop

centos安装hadoop

目录

一:配置虚拟机IP地址

 二:集群机器

三:配置ssh无密码登录本机和访问集群机器

 四:JDK和Hadoop安装配置

        <1>:JDK安装配置

        (1):查询已有JAVA环境版本信息

        (2): 卸载已有的openJDK

        (3):查看云端目前支持安装的jdk版本

        (4):安装完成,验证是否安装成功

        (5):配置JDK的环境变量

        <2>hadoop安装配置

        (1):下载hadoop(以hadoop-3.3.5为例):点击跳转下载

​        (2): 配置Hadoop环境变量:

 五:Hadoop配置文件修改

       (1): 修改core-site.xml文件(Master:在主节点的ip或者映射名(改成自己的))

       (2):修改hadoop-env.sh文件

       (3):修改hdfs-site.xml文件(注意改成自己的路径)

       (4):修改mapred-site.xml文件       

       (5):修改workers文件

       (6):修改yarn-site.xml文件

       (7):配置hadoop-3.3.5/sbin/目录下文件

       (8):将各个文件复制到其他节点上

       (9):在 Server1、Server2 节点上执行:

​       (10):生效Server1、Server2的环境变量

 六、启动Hadoop

        (1):CentOS 7关闭防火墙

         (2):启动


一:配置虚拟机IP地址

        以三台虚拟机为例,分别作为Master、Server 1、Server 2

         手动给三台虚拟机分别配以相应IP地址

 二:集群机器

        这里使用三台主机搭建分布式集群环境,更多台机器同样可以使用如下配置。IP在不同局域网环境下有可能不同,可以用ifconfig命令查看当前主机的IP。

         即可获得当前主机的IP在局域网地址,如下图:

        三台机器的名称和IP如下

主机名称

IP地址

Master

192.168.213.139

Server1

192.168.213.140

Server2

192.168.213.141

        三台电脑主机的用户名均为:W,三台机器可以ping双方的ip来测试三台电脑的连通性。以Master主机为例,Master节点主机上的Shell中运行如下命令,测试能否连接到Server 1节点主机。

         如果出现如下图,说明连接成功

         为了更好的在Shell中区分三台主机,修改其显示的主机名,执行如下命令

sudo vim /etc/hostname

        在Master/etc/hostname添加如下配置:Master

        同样Server 1/etc/hostname添加如下配置:Server1

        同样Server 2/etc/hostname添加如下配置:Server2

        重启三台电脑,重启后在终端Shell中才会看到机器名的变化,如下图:

         修改三台机器的/etc/hosts文件,添加同样的配置:

sudo vim /etc/hosts

         配置如下:

  1. 127.0.0.1 localhost
  2. 192.168.213.139 Master
  3. 192.168.213.140 Server1
  4. 192.168.213.141 Server2

三:配置ssh无密码登录本机和访问集群机器

        三台主机电脑分别运行如下命令:

  1. sudo yum -y install openssh
  2. systemctl enable sshd.service
  3. systemctl start sshd.service

        删除秘钥配置文件,在配置之前要将之前配置过得删除,配置文件在当前用户的家目录下.ssh目录(三个节点操作)

 rm -rf ~/.ssh

        生成秘钥(三个节点生成)

ssh-keygen

         输入完成后按四次回车,显示以下结果:

         秘钥拷贝(将三个节点的秘钥都拷贝到Master中)(三个节点执行)

ssh-copy-id Master

          拷贝完成后,在Master中检查是否拷贝成功(Master执行)

cat ~/.ssh/authorized_keys

         秘钥分发(Master执行)        

  1. scp -r ~/.ssh/authorized_keys Server1:~/.ssh/
  2. scp -r ~/.ssh/authorized_keys Server2:~/.ssh/

         免密登录验证(三个节点操作)  

  1. ssh Master
  2. ssh Server1
  3. ssh Server2

 四:JDKHadoop安装配置

        <1>:JDK安装配置

        (1):查询已有JAVA环境版本信息

java -version

        (2): 卸载已有的openJDK

rpm -qa |grep java

         如上,将下面几个删除即可

         .noarch文件属于通用文件,不影响,不用删除,删了也没事~

         删除命令,(注:删除命令需要用root权限)

sudo rpm -e --nodeps xxx

         检查是否已经删除成功,(如下说明已经删除成功了)

 java -version

 

         (3):查看云端目前支持安装的jdk版本

 yum search java|grep jdk

         选择版本后,安装(执行以下命令会自动安装jdk相关依赖)

sudo yum install -y java-11-openjdk

         (4):安装完成,验证是否安装成功

  java -version

        (5):配置JDK的环境变量

sudo vim ~/.bashrc

  1. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$PATH:$JAVA_HOME/bin:/usr/local/hadoop-3.3.5/bin:/usr/local/hadoop-3.3.5/sbin
  4. Master hadoop-3.3.5]$ bin/hdfs namenode -format
  5. unset HADOOP_HOME

          命令使修改的配置文件生效

source ~/.bashrc

        通过搜索java文件,查找jdk默认安装目录

  sudo find / -name 'java'

提示:通过yum命令在线安装jdk简单、快捷、无需配置环境变量即可使用java相关服务。

<2>hadoop安装配置

        (1):下载hadoop(以hadoop-3.3.5为例):点击跳转下载

 

下载好的安装包放在 /usr/local目录,然后进入该目录下解压安装:

sudo tar -xvf hadoop-3.3.5.tar.gz

        (2): 配置Hadoop环境变量:

sudo vim /etc/profile  

         添加hadoop环境变量:

  1. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64
  2. export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  3. export PATH=$PATH:$JAVA_HOME/bin:/usr/local/hadoop-3.3.5/bin:/usr/local/hadoop-3.3.5/sbin
  4. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

 注意:这里的$PATH:$JAVA_HOME/bin:/usr/local/hadoop-3.3.5/bin::/usr/local/hadoop-3.3.5/sbin表示在保留原来的$PATH环境变量的基础上,再增加$JAVA_HOME/bin和:/usr/local/hadoop-3.3.5/bin和:/usr/local/hadoop-3.3.5/sbin这些路径作为新的$PATH环境变量。

        执行使修改的配置文件生效。

source /etc/profile

 五:Hadoop配置文件修改

            修改etc/hadoop-3.3.5中的一系列配置文件

       (1): 修改core-site.xml文件(Master:在主节点的ip或者映射名(改成自己的))

sudo vim /usr/local/hadoop-3.3.5/etc/hadoop/core-site.xml

         在节点内加入配置:

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://Master:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>file:/usr/local/hadoop-3.3.5/tmp</value>
  9. <description>Abase for other temporary directories.</description>
  10. </property>
  11. </configuration>

         (2):修改hadoop-env.sh文件

sudo vim /usr/local/hadoop-3.3.5/etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64

将 export JAVA_HOME=${JAVA_HOME}修改为:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el7_9.x86_64 说明:修改为自己的JDK路径

        (3):修改hdfs-site.xml文件(注意改成自己的路径)

sudo vim /usr/local/hadoop-3.3.5/etc/hadoop/hdfs-site.xml 

        在节点内加入配置:

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

        (4):修改mapred-site.xml文件       

        Hadoop没有mapred-site.xml这个文件,现将文件复制到这然后进入mapred-site.xml

  1. cd /usr/local/hadoop-3.3.5/etc/hadoop
  2. sudo cp mapred-queues.xml.template mapred-site.xml
  3. sudo vim mapred-site.xml

        (Master:在主节点的ip或者映射名(改成自己的))

  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>Master:10020</value>
  9. </property>
  10. <property>
  11. <name>mapreduce.jobhistory.webapp.address</name>
  12. <value>Master:19888</value>
  13. </property>
  14. </configuration>

         (5):修改workers文件

        添加自己的主节点和从节点(Server1、Server2)

sudo vim /usr/local/hadoop-3.3.5/etc/hadoop/workers

        将里面的localhost删除,添加以下内容(Master和Server1、Server2节点都要修改):

  1. Server1
  2. Server2

 注意:这里面不能有多余空格,文件中不允许有空行。

         (6):修改yarn-site.xml文件

sudo vim /usr/local/hadoop-3.3.5/etc/hadoop/yarn-site.xml 

  1. <configuration>
  2. <property>
  3. <name>yarn.resourcemanager.hostname</name>
  4. <value>Master</value>
  5. </property>
  6. <property>
  7. <name>yarn.nodemanager.aux-services</name>
  8. <value>mapreduce_shuffle</value>
  9. </property>
  10. </configuration>

       (7):配置hadoop-3.3.5/sbin/目录下文件

        (start-dfs.sh、start-yarn.sh、stop-dfs.sh、stop-yarn.sh文件)

        服务启动权限配置
        配置start-dfs.sh与stop-dfs.sh文件

sudo vim sbin/start-dfs.sh 

        

        和

sudo vim sbin/stop-dfs.sh

  1. HDFS_DATANODE_USER=root
  2. HADOOP_SECURE_DN_USER=hdfs
  3. HDFS_NAMENODE_USER=root
  4. HDFS_SECONDARYNAMENODE_USER=root

         配置start-yarn.sh与stop-yarn.sh文件

sudo vim sbin/start-yarn.sh 

   

    

sudo vim sbin/stop-yarn.sh

  1. YARN_RESOURCEMANAGER_USER=root
  2. HADOOP_SECURE_DN_USER=yarn
  3. YARN_NODEMANAGER_USER=root

        (8):将各个文件复制到其他节点上

配置好后,将 Master 上的 /usr/local/Hadoop-3.3.5 文件夹复制到各个节点上。因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 Master 节点上执行:

  1. cd /usr/local
  2. sudo rm -r ./hadoop-3.3.5/tmp # 删除 Hadoop 临时文件
  3. sudo rm -r ./hadoop-3.3.5/logs/* # 删除日志文件
  4. sudo tar -zcf ~/hadoop-3.3.5.master.tar.gz ./hadoop-3.3.5 # 先压缩再复制
  5. cd ~
  6. sudo scp ~/hadoop-3.3.5.master.tar.gz Server1:/home/w
  7. sudo scp ~/hadoop-3.3.5.master.tar.gz Server2:/home/w
  8. sudo scp -r /etc/profile w@Server1:/etc/profile #将环境变量profile文件分发到Server1节点
  9. sudo scp -r /etc/profile w@Server2:/etc/profile #将环境变量profile文件分发到Server2节点
  10. sudo scp -r /usr/local/hadoop-3.3.5 w@Master:/usr/local
  11. sudo scp -r /usr/local/hadoop-3.3.5 w@Server1:/usr/local #将hadoop文件分发到Server1节点
  12. sudo scp -r /usr/local/hadoop-3.3.5 w@Server2:/usr/local #将hadoop文件分发到Server2节点

         (9):在 Server1、Server2 节点上执行:

  1. sudo rm -r /usr/local/hadoop-3.3.5 # 删掉旧的(如果存在)
  2. sudo tar -zxf ~/hadoop-3.3.5.master.tar.gz -C /usr/local
  3. sudo chown -R w /usr/local/hadoop-3.3.5

        (10):生效Server1、Server2的环境变量

source /etc/profile

 六、启动Hadoop

CentOS系统需要关闭防火墙: CentOS系统默认开启了防火墙,在开启 Hadoop 集群之前,需要关闭集群中每个节点的防火墙。有防火墙会导致 ping 得通但 telnet 端口不通,从而导致 DataNode 启动了,但 Live datanodes 为 0 的情况。

        (1):CentOS 7关闭防火墙

                需通过如下命令关闭(防火墙服务改成了 firewall,在Master执行):

  1. systemctl stop firewalld.service # 关闭firewall
  2. systemctl disable firewalld.service # 禁止firewall开机启动

                 使用以下命令查看防火墙状态:

systemctl status firewalld

         (2):启动

                首次启动需要先在 Master 节点执行 NameNode 的格式化:

  1. cd /usr/local/hadoop-3.3.5
  2. hdfs namenode -format # 首次运行需要执行初始化,之后不需要

         接着可以启动 hadoop 了,启动需要在 Master 节点上进行:

  1. start-dfs.sh
  2. start-yarn.sh
  3. mr-jobhistory-daemon.sh start historyserver
  4. #或者
  5. start-all.sh

输入命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode 进程,如下图所示:

         在 Server1、Server2节点可以看到 DataNode 和 NodeManager 进程,如下图所示:

 

 缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 hdfs dfsadmin -report 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有 2 个 Datanodes

 

 

 也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://主节点IP地址:9870 如果不成功,可以通过启动日志排查原因。

         在本地浏览器里访问如下地址:可以通过 http://主节点IP地址:808//cluster 自动跳转到cluster页面

          如果要关闭hadoop,执行以下命令:(三节点执行)

  1. stop-dfs.sh
  2. stop-yarn.sh
  3. #或
  4. stop-all.sh

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号