hadoop集群搭建

来源:互联网 发布:汉语言文学专业 知乎 编辑:程序博客网 时间:2024/06/05 05:11

1     环境说明

      hadoop2.7.3

      下载地址 :http://mirror.bit.edu.cn/apache/hadoop/common/

      两台主机,主机名和IP分别为:

      master      172.18.68.119  

      slave01    172.18.68.88

      master作为主节点,slave01作为副节点

2     hadoop环境搭建

2.1          设置ssh免密登录

2.1.1  创建hadoop用户

      建议为hadoop创建一个特定的操作用户hadoop,创建过程如下:

      1)以用户root登录

      2)执行如下命令

      $ useradd hadoop //创建hadoop用户

      $ passwd hadoop //设置hadoop用户的密码

      至此,新用户hadoop已创建成功,可执行下面两个步骤查看已创建的用户。

      $ cd /home

      $ ls

   

2.1.2  更改主机名和hosts文件

    以root用户登录。

    1)修改主机名

    $ vi /etc/hostname

       测试环境下,172.18.68.119作为主节点,修改其主机名为master,172.18.68.88作为从结点,修改主机名为slave01


*注意:主机名不要带有下划线_、点.符号,否则Hadoop启动会有问题,主机名的命名规则参照下图。


    2)修改hosts文件

       $vi  /etc/hosts  (注意 这里要配置要无密码登录的所有机器的Ip和名称,文件后面追加)


    3)重启

    $ shutdown -r now

2.1.3  配置免密登录

       1)以hadoop用户登录

       2)执行以下命令,修改“.ssh”目录权限

              chmod755 ~/.ssh

       备注:如果提示“.ssh”目录不存在,分别执行下面命令,创建目录并授权:

       a.   $ cd /home/hadoop/

$ mkdir ~/.ssh

              创建目录

       b.$ chmod 755 ~/.ssh

              修改目录权限

       3)生成公钥

       $cd /home/hadoop/.ssh   进入ssh目录

       $ssh-keygen -t rsa 执行命令生成公钥,有提示,一直按“enter”键

       备注:生成命令后,会生成下图所示的信息,如果提示的信息中hadoop@后面不是本机别名,说明主机名称需要重新配置一次,配置主机名后重启,然后删除/home/hadoop/下的.ssh目录,重复步骤1)-3),直至后缀是本机别名。


       4)把生成的密钥id_rsa.pub追加到key中去

              $cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

       5)修改文件authorized_keys权限

              $ chmod 600 ~/.ssh/authorized_keys

       6)设置SSH配置

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

       $vi /etc/ssh/sshd_config

      


       7)重启ssh服务

       设置完后,重启SSH服务,才能使设置生效

       $service sshd restart

       8)退出root登录,使用hadoop普通用户验证是否配置成功

       $ssh master

       若当前机器登录成功,接下来的要做的就是将公钥复制到所有的slave机器上。

       a.拷贝公钥到服务器(要登录上去的那台服务器slave)

       $ ssh-copy-id  hadoop@slave01

       b.设置完后,就可以使用下面的命令格式进行SSH无密码登录了。

       $ ssh slave01

       c.退出远程登录 logout

2.2   安装jdk

       以root用户登录

       1)在/usr下创建java文件夹

       $cd /usr

       $mkdir java

       2)下载jdk,并将下载的jdk上传到/usr/java中(可使用secureCRT的rz命令)

       下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

       3)解压jdk的tar文件

       $tar zxvf jdk-8u131-linux-x64.tar.gz

       4)解压后删除gz文件

       $rm -rf jdk-8u131-linux-x64.tar.gz

       以上步骤后,运行命令java -version若显示版本号,则以下5)、6)步骤可省略。

       5)配置jdk环境变量

       $vi /etc/profile

       添加以下数据

       // 将以下数据复制到文件底部

       JAVA_HOME=/usr/java/jdk1.8.0_131

       JRE_HOME=/usr/java/jdk1.8.0_131/jre

       CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

       PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

       exportJAVA_HOME JRE_HOME CLASS_PATH PATH

       6)使配置生效

       $source /etc/profile

       7)验证是否安装成功

       $java -version

       以上步骤后,jdk即安装完成了,若其他主机不想按步骤安装的话,可以使用scp命令拷贝到其他从节点,拷贝完后,执行步骤5)、6)、7)即可。

       $scp -r /usr/java root@172.18.34.165:/usr/java

2.3   hadoop安装

2.3.1    Hadoop安装配置

先只在master主机配置,配置完成后拷贝至slave主机。以hadoop用户登录

       1)下载

       http://mirror.bit.edu.cn/apache/hadoop/common/

       2)使用secureCRT,将hadoop的gz文件上传到/home/hadoop/文件夹

       $ cd /home/hadoop

       $ rz

       3)解压并重命名

       $tar zxvf  hadoop-2.7.3.tar.gz

       $mv hadoop-2.7.3 hadoop 重命名

       //删除hadoop-2.7.3.tar.gz文件

       $rm –rf hadoop-2.7.3.tar.gz

       4)在“/home/hadoop/hadoop”下面创建tmp文件夹

       $cd /home/hadoop/hadoop

       $mkdir tmp

       5)切换到root用户,将Hadoop的安装路径添加到“/etc/profile”中

       $su root

       $vi /etc/profile

export HADOOP_INSTALL=/home/hadoop/hadoop 

export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin${PATH} 

export HADOOP_MAPRED_HOME=${HADOOP_INSTALL} 

export HADOOP_COMMON_HOME=${HADOOP_INSTALL} 

export HADOOP_HDFS_HOME=${HADOOP_INSTALL} 

export YARN_HOME=${HADOOP_INSTALLL} 

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/natvie   

export HADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib:${HADOOP_INSTALL}/lib/native"

       // 将以下数据加入到文件末尾

       6)使“/etc/profile”配置生效

       $ source /etc/profile

      

       以下为配置hadoop集群的步骤,切换为hadoop用户。

       $ su hadoop

       7)设置hadoop-env.sh中的java环境变量

       $ cd /home/hadoop/hadoop/etc/hadoop/

       $ vi hadoop-env.sh

       添加:

       exportJAVA_HOME=/usr/java/jdk1.8.0_131

       8)配置core-site.xml文件

       $ vi core-site.xml

<configuration>

       <property>

              <name>hadoop.tmp.dir</name>

              <value>/home/hadoop/hadoop/tmp</value>

                <description>A base for other temporary directories.</description>

       </property>

       <property>

              <name>fs.default.name</name>

              <value>hdfs://master:9000</value>

       </property>

</configuration>

 

       修改文件内容如下:

       9)配置hdfs-site.xml

       $ vi hdfs-site.xml

<configuration>

        <property>

                <name>dfs.namenode.name.dir</name>

                <value>file:///home/hadoop/hadoop/dfs/name</value>

        </property>

        <property>

                <name>dfs.datanode.data.dir</name>

                <value>file:///home/hadoop/hadoop/dfs/data</value>

        </property>

        <property>

                <name>dfs.replication</name>

                <value>1</value>

        </property>

    <property>

        <name>dfs.nameservices</name>

        <value>hadoop-cluster1</value>

    </property>

    <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>master:50090</value>

    </property>

    <property>

        <name>dfs.webhdfs.enabled</name>

        <value>true</value>

    </property>

</configuration>

       修改文件内容如下:

       10)配置mapred-site.xml

       $ cp mapred-site.xml.templatemapred-site.xml   //拷贝模板到mapred-site.xml

       $ vi mapred-site.xml

       修改文件内容如下:

<configuration>

    <property>

         <name>mapreduce.framework.name</name>

         <value>yarn</value>

         <final>true</final>

    </property>

    <property>

        <name>mapreduce.jobtracker.http.address</name>

        <value>master:50030</value>

    </property>

    <property>

        <name>mapreduce.jobhistory.address</name>

        <value>master:10020</value>

    </property>

    <property>

        <name>mapreduce.jobhistory.webapp.address</name>

        <value>master:19888</value>

    </property>

    <property>

        <name>mapred.job.tracker</name>

        <value>http://master:9001</value>

    </property>

</configuration>

<!--下面的master改为集群master节点的主机名-->

       11)配置yarn-site.xml

       $ vi yarn-site.xml

       修改文件内容如下:

       下面的master改为集群master节点的主机名

<configuration>

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>master</value>

        </property>

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

    <property>

        <name>yarn.resourcemanager.address</name>

        <value>master:8032</value>

    </property>

    <property>

        <name>yarn.resourcemanager.scheduler.address</name>

        <value>master:8030</value>

    </property>

    <property>

        <name>yarn.resourcemanager.resource-tracker.address</name>

        <value>master:8031</value>

    </property>

    <property>

        <name>yarn.resourcemanager.admin.address</name>

        <value>master:8033</value>

    </property>

    <property>

        <name>yarn.resourcemanager.webapp.address</name>

        <value>master:8088</value>

    </property>

</configuration>

       这样master节点上的hadoop就配置完成了,接下来可以将配置好的hadoop拷贝到从节点中,执行12)。

       12)将master节点中配置好的hadoop传入slave从节点中

       $ scp -r /home/hadoop/hadoop hadoop@172.18.68.88:/home/hadoop

       13)修改master主机上的slaves文件,配置所有从节点的主机名

       $ cd /home/hadoop/hadoop/etc/hadoop

       $ vi slaves

slave01

       13)格式化HDFS文件系统

       在master主机上输入以下命令

       $ hadoop namenode -format

2.3.2       hadoop启动

       以hadoop用户登录

       1))关闭机器防火墙

       centos7默认防火墙用的firewalld。

       $ systemctl stop firewalld.service 关闭防火墙

       $ systemctl disable firewalld.service 关闭开机启动

       2)启动

       $ cd /home/hadoop/hadoop/sbin

       $ ./start-all.sh

       // 更推荐的运行方式:

       $ cd /home/hadoop/hadoop/sbin

       $ ./start-dfs.sh

       $ ./start-yarn.sh

       启动后输出以下信息:   

Starting namenodes on [master]

master: starting namenode, logging to /usr/hadoop/logs/hadoop-root-namenode-localhost.localdomain.out

slave01: starting datanode, logging to /usr/hadoop/logs/hadoop-root-datanode-slave01.out

 

starting yarn daemons

starting resourcemanager, logging to /usr/hadoop/logs/yarn-root-resourcemanager-localhost.localdomain.out

slave01: starting nodemanager, logging to /usr/hadoop/logs/yarn-root-nodemanager-slave01.out

2.3.3 Hadoop启动验证

       方式一:

       直接在master或slave输入命令jps查看运行进程

       $ jps

master:

3930 ResourceManager

4506 Jps

3693 NameNode

       输出如下信息(端口号仅供参考)

slave01:

2792 NodeManager

2920 Jps

2701 DataNode

       方式二:

       执行如下命令:

       $ hadoop dfsadmin -report

       输出如下信息

      

       方式三:

       访问网页

       $ systemctl stop firewalld.service //关闭防火墙

       输入以下网址,进入hadoop管理首页

       http://172.18.68.119:50070/dfshealth.html#tab-overview