Linux centos 配置hadoop集群

LinuxCentos7配置hadoop

博客地址
准备条件

  1. apache-hadoop-3.3.0 jar包
    hadoop-3.3.0(点击下载)
  2. jdk1.8
    jdk1.8(点击下载)

另外,需要准备三台虚拟机,分别命名为hadoop1,hadoop2,hadoop3,并且将这三台虚拟机这样配置接点,原理就不多说了。

hadoop1hadoop2hadoop3
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

开始配置

  1. 配置/etc/hostname,更改为hadoop1。目前这些步骤只用配置一台虚拟机,之后的通过虚拟机克隆得到haoop2,hadoop3。注意,在克隆之后,仍然要修改对应的主机名。

    [root@localhost ~]# yum install vim -y
    #先下载vim,方便编辑查看区别
    [root@localhost ~]# vim /etc/hostsname
    

    将这里的这行删掉,然后修改成hadoop1在这里插入图片描述

  2. 配置/etc/hosts

    [root@localhost ~]# vim /etc/hosts
    

    在这里插入图片描述
    修改成这样,先填入另两个虚拟机的地址,因为是使用克隆,所以三台虚拟机之间的ip地址相差不过,只用小作修改。修改好以后重启一下虚拟机就生效了。

  3. 配置jdk1.8

    可以通过上面给的连接下载然后通过工具传到linux上面,或者使用下面这个命令下载jdk,跟着顺序来,一步步的来,别慌。

    [root@hadoop1 ~]# yum install wget -y
    
    [root@hadoop1 ~]# mkdir /java
    [root@hadoop1 ~]# cd /java
    [root@hadoop1 java]# wget -i -c http://ljy0427.online/install/jdk1.8-linux.tar.gz
    #下载完成之后,解压
    [root@hadoop1 java]# tar -zxvf jdk-8u144-linux-x64.tar.gz
    #解压成功之后,重命名文件夹
    [root@hadoop1 java]# mv jdk1.8.0_144 java
    

    配置环境变量,在/etc/profile.d/目录下,自己创建一个.sh文件

    [root@hadoop1 java]# vim /etc/profile.d/my_env.sh
    #添加如下东西
    

    export JAVA_HOME=/java/java
    export PATH=$PATH:$JAVA_HOME/bin
    添加了以后,保存退出

    #重新刷新配置文件
    [root@hadoop1 java]# source /etc/profile
    #测试配置成功,只要出现版本号就说明配置成功了
    [root@hadoop1 java]# java -version
    
  4. 配置hadoop

    下载并解压apache-hadoop3.3.0

    [root@hadoop1 java]# mkdir /opt/hadoop
    [root@hadoop1 java]# cd /opt/hadoop
    

    如果之前没有下载的话,就在这个/opt/hadoop使用下面这个命令下载吧。

    [root@hadoop1 hadoop]# wget -i -c http://ljy0427.online/install/hadoop-3.3.0.tar.gz
    

    解压这个解压包

    [root@hadoop1 hadoop]# tar -zxvf hadoop-3.3.0.tar.gz
    #重命名解压包
    [root@hadoop1 hadoop]# mv hadoop-3.3.0 hadoop
    

    配置hadoop环境变量

    [root@hadoop1 hadoop]# vim /etc/profile.d/my_env.sh
    

    添加如下内容
    export HADOOP_HOME=/opt/hadoop/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    在这里插入图片描述

    [root@hadoop1 hadoop]# source /etc/profile
    #测试配置是否成功
    [root@hadoop1 hadoop]# hadoop
    #输入这个命令,看是否弹出一堆东西来
    

    在这里插入图片描述

    #之后先创建一些文件夹放着
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data/tmp
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data/var
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data/dfs
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data/dfs/name
    [root@hadoop1 hadoop]# mkdir /opt/hadoop/hadoop_data/dfs/data
    
  5. 关闭防火墙,参考下面这篇博文
    关闭防火墙

  6. 关闭了防火墙之后,就可以克隆虚拟机了

  7. 在克隆之前,再来一个操作,内行人看了都直呼666的操作,看好了

    创建一个脚本名字为,xsync,跟着我的顺序来,一步步的来,莫慌。

    [root@hadoop1 hadoop]# mkdir /root/bin
    [root@hadoop1 hadoop]# cd /root/bin
    [root@hadoop1 bin]# vim xsync
    

    在里面添加如下脚本

    #!/bin/bash	
    if [ $# -lt 1 ]
    then 
    	echo Not Enough Arguement!
    	exit;
    fi
    #注意,如果你的主机名命名和我不一样,下面这三个更换成你的主机名
    for host in hadoop1 hadoop2 hadoop3
    do 
    	echo =================  $host  =================  	
    	for file in $@
    	do
    		if [ -e $file ]
    			then
    				pdir=$(cd -P $(dirname $file); pwd)
    				fname=$(basename $file)
    				ssh $host "mkdir -p $pdir"
    				rsync -av $pdir/$fname $host:$pdir
    			else
    				echo $file does not exists!				
    		fi
    	done
    done	
    
    #创建完成之后,给这个脚本添加权限
    [root@hadoop1 bin]# chmod +x xsync
    
    #可以克隆了,克隆的时候,一定要将虚拟机关机才可以。
    #克隆完成之后,每台虚拟机都需要下载下面这个工具
    [root@hadoop1 bin]# yum install rsync -y
    
    
  8. 克隆完成之后,根据自己的虚拟机所分配的地址,修改三台虚拟机的/etc/hosts中的ip地址,以及/etc/hostname中的主机名

实现三台主机之间免密登录

参考我这篇博文
ssh免密登录
最好三台虚拟都使用ssh-copy-id hostname

修改hadoop的配置文件

  1. 为了保证没啥大问题,在hadoop的hadoop-env.sh中添加JAVA_HOME的路劲

    [root@hadoop1 ~]# cd /opt/hadoop/hadoop/etc/hadoop/
    [root@hadoop1 hadoop]# vim hadoop-env.sh
    

    修改之前
    修改之后
    在这里插入图片描述

  2. 修改hdfs-site.xml

    [root@hadoop1 hadoop]# vim hdfs-site.xml
    #如果你设置的主机名和我的不同,那记得将我这个配置文件里面的hadoop1替换成你对应的主机名。
    

    在这里插入图片描述

    <configuration> 里面添加以下东西

    	<!-- 指定NameNode的web端访问地址 -->
    <property>
            <name>dfs.namenode.http-address</name>
            <value>hadoop1:9870</value>
    </property>
    	
    	<!-- 设置SecondaryNameNode(2NN)的web端访问地址 -->
    <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>hadoop3:9868</value>
    </property>
    
    
    <property>
       <name>dfs.name.dir</name>
       <value>/opt/hadoop/hadoop_data/dfs/name</value>
       <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
    </property>
    
    <property>
       <name>dfs.data.dir</name>
       <value>/opt/hadoop/hadoop_data/dfs/data</value>
       <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
    </property>
    
    <property>
       <name>dfs.replication</name>
       <value>3</value>
    </property>
    
    <property>
          <name>dfs.permissions</name>
          <value>true</value>
          <description>need not permissions</description>
    </property>
    
  3. 复制并且修改mapred-site.xml

    [root@hadoop1 hadoop]# cp mapred-site.xml mapred-site.xml.template
    [root@hadoop1 hadoop]# vim mapred-site.xml
    

    也是一样的在<configuration> 里面添加以下东西

    <!-- 指定MapReduce程序运行在Yarn上的地址 -->
    <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
     </property>
    <property>
       <name>mapred.job.tracker</name>
       <value>hadoop1:49001</value>
    </property>
    
    <property>
          <name>mapred.local.dir</name>
           <value>/opt/hadoop/hadoop_data/var</value>
    </property>
    
    
    
  4. 配置yarn-site.xml,跟上面一样,在同样的位置添加以下东西

    [root@hadoop1 hadoop]# vim yarn-site.xml
    
    <!-- 指定MapReduce走shuffle -->
    <property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager的地址 -->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
    	<value>hadoop2</value>
    </property>
    
    
    
    <property>
    	<description>The address of the applications manager interface in the RM.</description>
    	<name>yarn.resourcemanager.address</name>
    	<value>${yarn.resourcemanager.hostname}:8032</value>
    </property>
    
    <property>
    	<description>The address of the scheduler interface.</description>
    	<name>yarn.resourcemanager.scheduler.address</name>
    	<value>${yarn.resourcemanager.hostname}:8030</value>
    </property>
    
    <property>
    	<description>The http address of the RM web application.</description>
    	<name>yarn.resourcemanager.webapp.address</name>
    	<value>${yarn.resourcemanager.hostname}:8088</value>
    </property>
    
    <property>
    	<description>The https adddress of the RM web application.</description>
    	<name>yarn.resourcemanager.webapp.https.address</name>
    	<value>${yarn.resourcemanager.hostname}:8090</value>
    </property>
    
    <property>
    	<name>yarn.resourcemanager.resource-tracker.address</name>
    	<value>${yarn.resourcemanager.hostname}:8031</value>
    </property>
    
    <property>
    	<description>The address of the RM admin interface.</description>
    	<name>yarn.resourcemanager.admin.address</name>
    	<value>${yarn.resourcemanager.hostname}:8033</value>
    </property>
    
    
    <property>
    	<name>yarn.scheduler.maximum-allocation-mb</name>
    	<value>2048</value>
    	<discription>每个节点可用内存,单位MB,默认8182MB</discription>
    </property>
    
    <property>
    	<name>yarn.nodemanager.vmem-pmem-ratio</name>
    	<value>2.1</value>
    </property>
    
    <property>
    	<name>yarn.nodemanager.resource.memory-mb</name>
    	<value>2048</value>
    </property>
    
    <property>
    	<name>yarn.nodemanager.vmem-check-enabled</name>
    	<value>false</value>
    </property>
    
    
  5. 配置core-site.xml,同上

    [root@hadoop1 hadoop]# vim core-site.xml
    
    	<property>
    
            <name>hadoop.tmp.dir</name>
    
            <value>/opt/hadoop/hadoop_data/tmp</value>
    
            <description>Abase for other temporary directories.</description>
    
       </property>
    
       <property>
    
            <name>fs.default.name</name>
    		<!-- hadoop1的内网IP地址 -->
            <value>hdfs://hadoop1:9000</value>
    
       </property>
    
    	
    	
    	<!-- 指定NameNode的地址 -->
    	<property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1:8020</value>
    	</property>
    
  6. 配置workers,将三个主机名添加进去。

    [root@hadoop1 hadoop]# vim workers
    

    记住必须严格按照我的效果图,主机名称后面不准有空格,只能换行!
    在这里插入图片描述

  7. 同步这些配置文件到hadoop2,hadoop3上

    到了这里,有些人已经崩溃了,还要配两次???
    要配置两遍,那是对于别人,看好我的操作,一次就好。
    前面不是创建了一个脚本xsync么?现在到它起作用的时候来了。看好了,别眨眼,记得直呼666。操作如下

    [root@hadoop1 hadoop]# cd ..
    [root@hadoop1 etc]# xsync hadoop/
    

    在这里插入图片描述

    怎么样,结果跟我这个一样不一样,你就看看另外两台虚拟机里面的这些对应的配置文件,是不是修改了,我就问你6不6,值不值得点个赞,加个关注??

  8. 再修改/sbin目录下的几个配置文件

    [root@hadoop1 etc]# cd ../sbin
    [root@hadoop1 sbin]# 
    

    修改start-dfs.sh,以及stop-dfs.sh,在这两个文件的开头加上以下配置

    HDFS_DATANODE_USER=root
    HADOOP_SECURE_SECURE_USER=root
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    

    在这里插入图片描述
    修改start-yarn.sh,以及stop-yarn.sh,在这两个文件的开头加上以下配置

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=root
    YARN_NODEMANAGER_USER=root
    

    在这里插入图片描述

    #又分发下已配置的配置文件到hadoop2,hadoop3
    [root@hadoop1 sbin]# cd ..
    [root@hadoop1 hadoop]# xsync sbin/
    

启动Hadoop

  1. 初始化hadoop

    [root@hadoop1 hadoop]# hadoop  namenode  -format
    

    在这里插入图片描述

  2. 启动集群

    [root@hadoop1 hadoop]# start-all.sh
    

    在这里插入图片描述

    然后再输入jps看看

    [root@hadoop1 hadoop]# jps
    

    在这里插入图片描述

    只要运行结果如上,都说明成功了,那么现在去浏览器里面输入hadoop1这个主节点的ip地址访问试试,我的是http://192.168.75.146:9870/
    在这里插入图片描述
    在这里插入图片描述
    这里表示存在三个节点,说明成功了,但是这里访问8088端口,却访问不了,这个时候就会有人认为又出问题了,其实没有。仔细回顾上面在一开始配置hadoop时,我弄了张表格,发现ResourceManager这个节点是配置hadoop2上面的。而这个东西,是要手动到hadoop2上面去运行的,才会出来。所以这个时候切换到hadoop2这台主机启动一下。

  3. hadoop2启动ResourceManager

    [root@hadoop2 hadoop]# start-yarn.sh
    

    然后再使用jps查看一下

    [root@hadoop2 hadoop]# jps
    

    在这里插入图片描述

这不就成功了!!!然后再在浏览器里面输入hadoop2的主机地址,端口使用8088,看看效果吧,我的是http://192.168.75.142:8088/cluster

在这里插入图片描述

er在这里插入图片描述在这里插入图片描述
而且可以很清楚的在这里看到每台服务器的状态。

总结

可能也有其他教程,比我这个简单。但是我个人觉得,搭建一个hadoop就需要这样,使用三台服务器,一台当做NameNode,一台当做SecondaryNameNode,最后一台当做ResourceManager,这样三台服务器都担任着不同的角色,使得其他服务的负荷不重,能够尽量的保证整个hadoop的顺畅运行(个人观点,不喜勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值