超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)

前言:说真的我是真不喜欢搭建Hadoop,什么奇葩问题都有。最近有个课程需要做这个实验,无奈自己的mac空间不够我折腾,特意租了三个服务器来做这个实验。我其实也是差不多照着网上的教程来的,但他们说的都不是很细,遇到的问题也很多。下面这篇博客记录了我在三台服务器上搭建Hadoop完全分布式的记录。本地的搭建也适用,并不要求是云服务器。如果是用云服务器来搭建的朋友,推荐使用xshell6来操作。

OK进入正题。我的结构是用阿里云(Centos7.5)作为master,腾讯云(Centos6.3)作为两个slave。博客分成三个部分: 

一、环境设置

二、设置主从节点间的免密登录

三、安装Hadoop并配置

四、运行结果

 


 

一、环境设置:

在安装好Linux系统的基础上,在master节点上先做以下准备工作:(云服务器自带操作系统)

自行切换到root模式下,可以避免权限的 干扰。虽然不推荐这样,但学习阶段不用care。

1.安装jdk1.8:到甲骨文的官网自行下载jdk1.8 linux版本的,当然也可以通过wget+下载网址来下载。

下载完之后

在usr下面创建一个java文件夹:mkdir java

然后通过解压指令:tar -zxvf +jdk的名字  -C +解压路径(也就是/usr/java)

等待解压完成,输入指令vi /etc/profile配置java环境变量。推荐大家这样配置!profile是对全局用户均有效。

.barshrc那个是运行时有效,具体百度。然后加入下面的内容。注意路径的替换:

export JAVA_HOME=/usr/java/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

然后通过指令:source /etc/profile

控制台输入:jave -version(注意空格)

ok配置成功!三台主机都要配置!!

2.关闭防火墙:其实centos的防火墙默认是关闭了,但是为了防止这个问题的影响,还是要关闭一下:

防火墙一定要关闭!不然后面会影响我们访问hadoop的本地web页面

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第1张图片

没有任何输出则证明执行成功。

3.修改hosts文件:(root模式)

这一步非常关键!一定不能填错IP地址。(如果是本地的话则没有这个限制)云服务器一般会有公网和内网两个IP。首先在master上hosts文件需要填入的是:master内网ip(我这里是阿里云服务器,因此填入阿里云的内网ip),然后填入两个slave的外网IP。然后再修改两个slave的hosts文件,内容填入三台服务器的外网IP即可。

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第2张图片

打个码。。毕竟是我自己的服务器。配置完master,务必配置两台slave,网上说的什么发送这个hosts配置给其它两台slave,其实没必要也不需要。按照我下面说的去配。

这里给大家的建议是:在哪台机器上配置就用自己的内网IP,其它机器用外网IP。在这里解释一下内网和外网ip。外网ip是服务器映射提供的,可以自由更改,内网ip则是你服务器的真实ip,不可更改,就是我们常说的每台主机都有一个独一无二的ip地址。

4.创建Hadoop用户:(这一步可以跳过,全在root模式下,可以避免权限问题)

后面Hadoop环境的配置都要在这个用户下面了。

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第3张图片

adduser hadoop --> passward hadoop 然后输入密码。

之后切换到Hadoop用户:su hadoop。

到此准备工作完成!

二、设置master和slave之间免密登录

这是搭建Hadoop最恶心的部分了,很多奇怪的问题都是从这产生的。废话不多话进入正题。

1.创建公匙:

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第4张图片

创建完后,在三台主机上都执行下面的指令:

ssh-copy-id localhost

ssh-copy-id slave1

ssh-copy-id slave2

也可以将名字替换成IP,但前面已经在host文件映射过Ip和名字的关系了。执行完三条指令,分别测试:ssh localhost、ssh slave1 ssh slave2.可以看到成功免密登录。

三、安装hadoop并配置:

以前博客给的其实都不太能用了,那些安装包的地址都失效了,如果你有可视化的操作界面,直接到hadoop官网下载然后解压,安装包大小在300MB左右。如果是服务器这边只有大黑框,可以通过wget指令来实现安装:这里贴一个还能用的下载源:http : //archive.apache.org/dist/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第5张图片

下面开始配置hadoop的文件:

1.修改core-site.xml:



 
   
    fs.defaultFS 
    hdfs://master:9000 
   

 
   
    io.file.buffer.size 
    4096 
   
 
   
    hadoop.tmp.dir 
    /opt/hadoop/hadoop-2.8.5/tmp 
  

2.修改hdfs-site.xml

用mkdir命令在hadoop-2.8.5目录下创建hdfs文件夹,然后再hdfs里面分别创建name和data文件夹。



 
     
        dfs.replication 
        3 
     
 
     
        dfs.namenode.name.dir 
        /opt/hadoop/hadoop-2.8.5/hdfs/name 
     
 
     
        dfs.datanode.data.dir 
        /opt/hadoop/hadoop-2.8.5/hdfs/data 
     
 
     
        dfs.http.address 
        Master:50070 
     
 
     
        dfs.secondary.http.address 
        0.0.0.0:50090 
     
 
     
        dfs.webhdfs.enabled 
        true 
     
 
     
        dfs.permissions 
        false 

3.配置mapred-site.xml

这里注意一下,如果没有这个文件,对mapred.site.xml.template编辑也是一样的。



 
     
        mapreduce.framework.name 
        yarn  
 
     
        mapreduce.jobhistory.address 
        Master:10020 
     
 
     
        mapreduce.jobhistory.webapp.address 
        Master:19888 
    

4.配置yarn-site.xml

凡是涉及到主机名和路径的自行替换成自己的。





 
     
        yarn.resourcemanager.hostname 
        slave1 
     
 
     
        yarn.nodemanager.aux-services 
        mapreduce_shuffle 
     
 
     
        yarn.resourcemanager.address 
        Master:8032 
     
 
     
        yarn.resourcemanager.scheduler.address 
        Master:8030 
     
 
     
        yarn.resourcemanager.resource-tracker.address 
        Master:8031 
     
 
     
        yarn.resourcemanager.admin.address 
        Master:8033 
     
 
     
        yarn.resourcemanager.webapp.address 
        Master:8088 
    

5.配置slaves:直接加入slave1 slave2 。替换成自己的主机名字。

6.配置hadoop-env.sh、yarn-env.sh、mapred-env.sh 在里面加入自己的jdk路径。如果不知道jdk路径输入whereis java。加入下面的内容:/usr/java/jdk1.8.0_231。注意替换自己的路径。

7.配置完成!将该文件打包发送到其它两台服务器上面。

打包指令:tar -zcvf +新压缩的文件名 +被压缩的文件名。

发送指令: scp +待发送的文件名+ 用户名@主机名:/接受路径

如: scp hadoop-2.8.5.tar.gz root@slave1:/home/hadoop

8.配置hadoop的环境变量:

vi  /etc/profile

添加下面的内容,注意替换自己的路径:如果用到的路径没有相应的文件夹就自己创建。请注意三台主机都要配置!!

export HADOOP_HOME=/usr/opt/hadoop/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_LOG_DIR=/usr/opt/hadoop/hadoop-2.8.5/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR

执行指令source  /etc/profile 然后控制台输入 hadoop version 输出hadoop的版本说明配置成功。

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第6张图片

四、运行结果

1.启动hadoop:

首先进入hadoop的sbin目录,格式化namenode:hdfs namenode -format

输入指令:start-all.sh会启动所有的服务,就不需要到salve1在去启动yarn。

等待它完成。

然后控制台输入jps:

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第7张图片

可以看到hadoop所有的服务都已经成功启动。

然后我们访问hadoop的本地web页面:

浏览器输入:http://116.62.111.210:50070/  这里注意替换成自己服务器的公网ip!!

然后可以看到下面的界面:

超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的)_第8张图片

对了还可以访问9000端口跑wordcount程序,可以看到结果。这里演示了。修改任何hadoop文件都要先运行stop-all.sh停掉所有的hadoop服务器,修改完成后务必记得格式化namenode。到此一个hadoop-2.8.5正式搭建完成!

这里说一下博主搭建的心得吧。其实hadoop搭建不难,网上有些人写的帖子确实垃圾,漏了很多内容,但我这篇绝对是我踩了诸多的坑后总结的。

你可能感兴趣的:(超简单:在阿里云和腾讯云搭建完全分布式Hadoop环境(踩坑无数,含泪总结的))