美文网首页我爱编程
Hadoop2.6.0完全分布式的安装与配置(Centos)

Hadoop2.6.0完全分布式的安装与配置(Centos)

作者: lao男孩 | 来源:发表于2016-05-31 15:38 被阅读0次

    1.Linux安装前的配置

    1.1.关闭防火墙

          本站文档是假定「服务器在防火墙以内」的前提下编纂的,在这个前提下,服务器本身在内部网络是不需要防火墙的(在需要抵御内部安全威胁的情况下,您也可以用您在iptables方面的相关知识,根据实情设置防火前,并保证服务器端防火墙启动的状态)。另外,在一般情况下,我们不需要SELinux复杂的保护,所以也将其设置为无效的状态。

    service iptables stop

    1.2.关闭SELinux

    用下面命令执行,并修改内容如下所示:

    vim /etc/sysconfig/selinux

    SELINUX=enforcing

    ↓修改为

    SELINUX=disabled

    2.集群部署介绍

    2.1.环境说明

          集群中包括5个节点:1个Master,4个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:

    机器名称                                         IP地址


    Master.Hadoop                                 70.70.70.120

    Slave1.Hadoop                                  80.80.80.184

    Slave2.Hadoop                                  80.80.80.183

    Slave3.Hadoop                                  80.80.80.182

    Slave4.Hadoop                                  80.80.80.180

    四个节点上均是CentOS6.0系统,并且有一个相同的用户hadoop。Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行;3个Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器。

    2.2.网络配置

    下面的例子我们将以Master机器为例,即主机名为"Master.Hadoop",IP为"70.70.70.120“进行主机的配置,他的Slave机器以此为依据进行修改。

    2.2.1.查看当前机器名称

    命令:

    hostname

    上图中,用”hostname"查"Master"机器的名字为“centos1.teacher20”,这是默认机器名,我们进行修改。

    2.2.2.修改当前机器名称

    我们的机器的主机名不是我们想要的,通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规划的名称。

    这个"/etc/sysconfig/network"文件是定义hostname和是否利用网络的不接触网络设备的对系统全体定义的文件。

    vi /etc/sysconfig/network

    通过上面的命令我们从"/etc/sysconfig/network"中找到"HOSTNAME"进行修改,查看内容如下

    配置完成之后,我们需要重启主机,命令:

    reboot

    2.2.3.配置hosts文件(必须)

    "/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。

    在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的"/etc/hosts"文件末尾中都要添加如下内容:

    vi /etc/hosts

    70.70.70.120Master.Hadoop

    80.80.80.184Slave1.Hadoop

    80.80.80.183Slave2.Hadoop

    80.80.80.182Slave3.Hadoop

    80.80.80.180Slave4.Hadoop

    从上图中我们已经能用主机名进行ping通了,说明我们刚才添加的内容,在局域网内能进行DNS解析了,那么现在剩下的事儿就是在其余的Slave机器上进行相同的配置。然后进行测试。(备注:当设置SSH无密码验证后,可以"scp"进行复制,然后把原来的"hosts"文件执行覆盖即可。)

    2.3.所需软件

    JDK软件

    jdk-7u75-linux-x64

    Hadoop软件

    hadoop-2.6.0.tar

    2.4.创建用户组和用户 hadoop

    创建hadoop用户组:

    groupadd hadoop

    创建hadoop用户:

    useradd –g hadoop hadoop

    为hadoop用户添加密码:

    passwd hadoop

    使得hadoop用户获得sudo权限。

    vi /etc/sudoers

    我们这里设置hadoop的密码都是hadoop

    编辑好,退出时,wq!(加叹号)

    2.5.上传本地JDK和hadoop安装包到主机

    使用rz命令。

    我们在hadoop根目录中上传,并且使用hadoop用户。

    [hadoop@Master ~]$ rz

    3.SSH无密码验证配置

    Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

    3.1.安装和启动SSH协议

    rpm –qa | grep openssh

    rpm –qa | grep rsync

    通过以上命令,我们主机上没有安装rsync(远程数据同步工具)

    安装SSH协议(这个已经安装,我们机器不需要再次安装)!!!

    yum install ssh                                         #(这个已经安装,我们机器不需要再次安装)

    安装rsync(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)

    yum install rsync

    service sshd restart                                 #重启服务

    确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。

    3.2.配置Master无密码登录所有Salve

    3.2.1.SSH无密码原理

    Master(NameNode |JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

    3.2.2.Master机器上生成密码对

    在Master节点上执行以下命令:

    [hadoop@master ~]$ ssh-keygen -t rsa -P ''

    这条命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。

    查看"/home/hadoop/"下是否有".ssh"文件夹,且".ssh"文件下是否有两个刚生产的无密码密钥对。

    [hadoop@Slave4~]$ ll -a | grep .ssh

    接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

    [hadoop@Slave4.ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。

    1)修改文件"authorized_keys"

    [hadoop@Slave4 .ssh]$ chmod 600~/.ssh/authorized_keys

    备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。

    2)设置SSH配置

    用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。

    [root@Slave4 .ssh]# vi /etc/ssh/sshd_config

    下面是文件修改好的。

    设置完之后记得重启SSH服务,才能使刚才设置有效。

    [root@Slave4 .ssh]# service sshd restart

    退出root登录,使用hadoop普通用户验证是否成功。

    [hadoop@Slave4 .ssh]$ ssh localhost

    从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的Slave机器上。

    再往下做之前,把其他四台的公钥私钥全部产生,参照以上步骤。

    使用下面的命令格式进行复制公钥:

    scp ~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/

    例如:

    [hadoop@Master .ssh]$ scp    ~/.ssh/id_rsa.pub hadoop@80.80.80.183:~/

    3.2.3.把Master.Hadoop上的公钥复制到Slave1.Hadoop上

    [hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.184:~/

    依据以上方式,分别复制到其他四太主机的根目录下。

    [hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.183:~/

    [hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.182~/

    [hadoop@Master .ssh]$ scp ~/.ssh/id_rsa.pubhadoop@80.80.80.180~/

    从其他四台slave.adoop上可以用ls –a查看确实存在id_rsa.pub这个文件。

    3.2.4.在其他四太Slave.Hadoop上,将公钥添加到授权密钥文件authorized_keys内。

    [hadoop@Slave1 ~]$ cat ~/id_rsa.pub>> ~/.ssh/authorized_keys

    …slave2….

    …slave3…

    依次,等等。

    最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉。

    [hadoop@Slave3 .ssh]$ rm ~/id_rsa.pub

    3.3.配置所有Slave无密码登录Master

    和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)。

    思想:分别在其他四台Slave上使用

    [hadoop@Slave1 ~]$ scp ~/.ssh/id_rsa.pubhadoop@70.70.70.120:~/

    将Slave上的公钥发到Master上去,然后每发送一个。在Master上,使用

    [hadoop@Master ~]$ cat ~/id_rsa.pub>> ~/.ssh/authorized_keys

    将Slave的公钥添加到Master的授权文件中。然后把传过来的公钥文件删除。。。。

    到此为止。我们验证一下ssh可以Master和Slave之间的无密码相互登陆(因为我们是在hadoop用户设置的,所以我们必须是切换到hadoop用户下去验证)。

    等等。

    4.Java环境安装

          所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行。

    4.1.安装JDK

    首先用root身份登录"Master.Hadoop"后在"/usr"下创建"java"文件夹,再把用“rz命令”上传到"/home/hadoop/"下的"jdk-7u75-linux-x64.rpm"复制到"/usr/java"文件夹中。

    [root@Masterusr]# mkdir /usr/java

    [root@Masterusr]# cp /home/hadoop/jdk-7u75-linux-x64.rpm /usr/java

    演示截图:

    创建java文件夹,cp    JDK包

    确认查看已经复制过来:

    接着进入"/usr/java"目录通过下面命令使其JDK获得可执行权限,并安装JDK。

    [root@Masterjava]# chmod 755 jdk-7u75-linux-x64.rpm

    [root@Masterjava]# rpm -i jdk-7u75-linux-x64.rpm

    演示截图:

    按照上面几步进行操作,最后点击"Enter"键开始安装,安装完会提示你按"Enter"键退出,然后查看"/usr/java"下面会发现多了一个名为"jdk1.7.0_75"文件夹,说明我们的JDK安装结束,删除"jdk-7u75-linux-x64.rpm"文件,进入下一个"配置环境变量"环节。

    4.2.配置环境变量

    编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。

    4.2.1.编辑"/etc/profile"文件

    [root@Masterjava]# vi /etc/profile

    3.2.2.添加Java环境变量

    在"/etc/profile"文件的尾部添加以下内容:

    # set java environment

    export JAVA_HOME=/usr/java/jdk1.7.0_75

    exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

    exportPATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

    4.2.3.使配置生效

    保存并退出,执行下面命令使其配置立即生效。

    [root@Master java]# source /etc/profile

    [root@Slave1 java]# echo $JAVA_HOME

    验证截图

    从上图中得知,我们以确定JDK已经安装成功。

    4.3.安装剩余机器

    这时用普通用户hadoop通过下面命令格式把"Master.Hadoop"文件夹"/home/hadoop/"的JDK复制到其他Slave的"/home/hadoop/"下面,剩下的事儿就是在其余的Slave服务器上按照上图的步骤安装JDK。

    scp /home/hadoop/jdk-6u31-linux-i586.bin远程用户名@远程服务器IP:~/

    或者

    scp ~/jdk-6u31-linux-i586.bin远程用户名@远程服务器IP:~/

    备注:"~"代表当前用户的主目录,当前用户为hadoop,所以"~"代表"/home/hadoop"。

    例如:把JDK从"Master.Hadoop"复制到"Slave1.Hadoop"的命令如下。

    [hadoop@Master ~]$ scp~/jdk-7u75-linux-x64.rpmhadoop@80.80.80.184:~/

    然后查看"Slave1.Hadoop"的"/home/hadoop"查看是否已经复制成功了。

    从上图中得知,我们已经成功复制了,现在我们就用最高权限用户root进行安装了。其他的与这个一样。

    5.Hadoop集群安装

    所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。

    5.1.安装hadoop

    首先用root用户登录"Master.Hadoop"机器,查看我们之前用FTP上传至"/home/Hadoop"上传的"hadoop-2.6.0.tar.gz "。

    接着把"hadoop-1.0.0.tar.gz"复制到"/usr"目录下面。

    [root@Masterhadoop]# cp /home/hadoop/hadoop-2.6.0.tar.gz /usr

    下一步进入"/usr"目录下,用下面命令把"hadoop-2.6.0.tar.gz"进行解压,并将其命名为"hadoop",把该文件夹的读权限分配给普通用户hadoop,然后删除"hadoop-2.6.0.tar.gz"安装包。

    cd /usr               #进入"/usr"目录

    tar -zxvfhadoop-2.6.0.tar.gz                #解压"hadoop-2.6.0.tar.gz "安装包

    [root@Masterusr]# mv hadoop-2.6.0 hadoop        #将"hadoop-2.6.0"文件夹重命名"hadoop"

    首先在/usr/hadoop创建“tmp”文件夹

    mkdir /usr/hadoop/tmp

    然后

    [root@Master]# chown -R hadoop:hadoop hadoop    #将文件夹"hadoop"读权限分配给hadoop用户

    [root@Masterusr]# rm -rf hadoop-2.6.0.tar.gz    #删除"hadoop-2.6.0.tar.gz "安装包

    》》配置"/etc/profile"

    vim /etc/profile

    #set hadoop path

    exportHADOOP_HOME=/usr/hadoop

    export PATH=$PATH:$HADOOP_HOME/bin

    配置后的文件如下:

    》》重启”/etc/profile”

    source/etc/profile

    5.2.配置hadoop文件

    这里要涉及到的配置文件有7个:

    usr/hadoop-2.6.0/etc/hadoop/hadoop-env.sh

    usr/hadoop-2.6.0/etc/hadoop/yarn-env.sh

    usr/hadoop-2.6.0/etc/hadoop/slaves

    usr/hadoop-2.6.0/etc/hadoop/core-site.xml

    usr/hadoop-2.6.0/etc/hadoop/hdfs-site.xml

    usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml

    usr/hadoop-2.6.0/etc/hadoop/yarn-site.xml

    目录开始切换到/usr/hadoop-2.6.0/etc/hadoop(hadoop安装目录)

    5.2.1.配置文件1:hadoop-env.sh

    修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_75)

    命令:[hadoop@masterhadoop]$ vi hadoop-env.sh

    保存退出!

    5.2.2.配置文件2:yarn-env.sh

    修改JAVA_HOME值(export JAVA_HOME=/usr/java/jdk1.7.0_75)

    命令:[hadoop@masterhadoop]$ vi yarn-env.sh

    5.2.3.配置文件3:slaves(这个文件里面保存所有slave节点)

    [hadoop@master hadoop]$ vi slaves

    写入以下内容:

    slave1

    slave2

    slave3

    slave4

    5.2.4.配置文件4:core-site.xml

    命令:[hadoop@master hadoop]$ vi core-site.xml

    5.2.5.配置文件5:hdfs-site.xml

    命令:[hadoop@master hadoop]$ vi hdfs-site.xml

    5.2.6.配置文件6:mapred-site.xml

    [hadoop@master hadoop]$ vi mapred-site.xml

    5.2.7.配置文件7:yarn-site.xml

    命令:[hadoop@master hadoop]$ vi yarn-site.xml

    5.3.master上配置好的hadoop2.6.0目录scp复制到其他slave节点(为节约时间)

    上面配置完毕,我们基本上完成了90%了剩下就是复制。我们可以把整个hadoop复制过去:使用如下命令:

    sudo scp -r /usr/hadoop hadoop@slave1:~/

    这里记得先复制到home/hadoop目录下面,然后在转移到/usr下面。

    后面我们会经常遇到问题,经常修改配置文件,所以修改完一个配置文件后,其他节点都需要修改,这里附上脚本操作方便:

    6.启动验证

    在root用户下关闭所有主机的防火墙:

    sudo service iptables stop

    6.1.启动hadoop

    格式化namenode:

    hdfs namenode –format

    或则使用下面命令:

    hadoop namenode format

    启动hdfs:

    start-dfs.sh

    启动yarn:

    start-yarn.sh

    2.2.结果进程展示:

    master有如下进程:

    Slave上有以下进程:

    浏览器进入8080端口:ip为服务器ip



    此时hadoop集群已全部配置完成!!!@老男孩 (wzhj361@gmail.com)


    相关文章

      网友评论

        本文标题:Hadoop2.6.0完全分布式的安装与配置(Centos)

        本文链接:https://www.haomeiwen.com/subject/gcugrttx.html