【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

时间:2022-09-24 23:20:55

 开发环境:

    本环境是基于centos 为系统环境。三台虚拟机,分别为master ,slave1 ,slaves2 。适用于hadoop 2.x.y 版本,省略Hadoop压缩包解压过程。


 

第一步 虚拟机的安装:

1.安装Vmware WorkStation 或者 Visualbox ,在这里以Vmware Workstation 为例

2.找到 新建虚拟机向导 ,一路回车。

加载需要安装系统光盘(以CentOS 为例)

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

如果无法自动识别,手工选择操作系统。

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

关于命名:为了方便做分布式计算时的区分,给每个虚拟机取独一无二的名字。

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

关于容量:根据自己的需要来设置硬盘大小,一般数据量不太大的话16GB合适。把虚拟硬盘拆成多个以后在与其他人合作时拷贝会更方便。

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

3.(本步若没有做在后面也可以改过来)本次配置为三台虚拟机,分别为master ,slave1 ,slave2 。为了在接下来的平台安装中操作方便,建议将用户名命名为:hadoop ,主机名分别命名为master ,slave1 ,slave2 。

 


 

第二步:Hadoop 平台的安装与配置

实验室里用的是Ubuntu 系统,但是我的电脑带不动。

1.创建hadoop用户(3台都要)

    我们为hadoop实验专门创建用户hadoop。

    在root条件下创建hadoop用户。

    修改密码,密码为hadoop

su
useradd -m hadoop -s /bin/bash
passwd hadoop

    修改sudo文件,使得hadoop拥有管理员权限

Visudo

在第98行增加以下指令(i插入,esc shift : 输入指令, q!不保存退出,wq 保存退出)

Hadoop ALL=(ALL) ALL

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

 

2.为了操作方便,我们需要修改一下三台主机名。

sudo vim /etc/sysconfig/network

    将namenode改为:HOSTNAME=master

    将剩下的俩台datanode分别改为HOSTNAME=slave1 HOSTNAME=slave2

    以namenode为例:

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

 

3.配置网络(3台都要)

    输入 ifconfig -a ,查看各个虚拟机的ip 配置

ifconfig -a

    以slave1 为例:

 【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    查看到三台虚拟机的IP如下:

        192.168.93.134 master

        192.168.93.135 slave1

        192.168.93.136 slave2

    在三台服务器中的hosts文件中分别设置对应的主机名:

sudo gedit /etc/hosts	

    为了把三台主机的IP 地址都存到各自的host 中,我们把hosts文件最后一行中添加以下信息,:

192.168.93.134 master
192.168.93.135 slave1
192.168.93.136 slave2

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

 

4. 设置免密码登陆(在master操作)

    在node1设置无密码登陆database服务器,执行:

ssh-keygen

     一路回车即可(图片是原来root权限下设置的)

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    拷贝公钥至datanode。需注意公钥的确切路径(上图生成公钥图中有),需注意过程中需要输入datanode的登陆密码,然后将datanode加入到列表中。

ssh-copy-id –i /home/hadoop/.ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub hadoop@slave2
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    注意:

    在拷贝过程中无法建立连接时:

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    修改~/.ssh/下的authorized_keys文件权限(试了很多步骤发现这一步非常非常关键)

chmod 600 ./authorized_keys

    在are you sure you want to continue connecting时不要按回车而是yes再回车

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

 


 

第三步:安装JAVA(三台都要)

因为Hadoop 用的是Java API ,所以在这里我们安装Java。

   在联网情况下在线安装JAVA,在遇到Y/N时输入y,然后一路回车

sudo yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

    yum默认安装路径为/usr/lib/jvm

 

查看绝对路径,用于配置环境变量

rpm -ql java-1.7.0-openjdk-devel | grep '/bin/javac'

 其中,/bin/javac之前的就是绝对路径了

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161.x86_64

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    先进入.bashrc所在文件位置

    打开.bashrc文件

cd ~/
sudo gedit ~/.bashrc

    在最后一行输入如下语句,保存退出

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161.x86_64

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    接着还需要让该环境变量生效(非常重要!),执行如下代码:

source ~/.bashrc

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    这个时候环境变量应该是配好了,为了验证效果。我们输入

echo $JAVA_HOME  
java -version
$JAVA_HOME/bin/java –version

    如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和 java -version 的输出结果一样

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)


 

第四步:安装hadoop

    我们选择下载hadoop 2.6.5版本

    下载时需要下载hadoop-2.6.5.tar.gz文件,此为已经编译好的,可以直接使用的压缩包。

    Linux系统下载的文件一般在download文件夹中。

    我们将压缩文件解压到/usr/local/中,为了防止hadoop文件夹不能被修改,还需要改一下权限。

 

sudo tar -zxf ~/download/hadoop-2.6.5.tar.gz -C /usr/local
cd /usr/local/
sudo mv ./hadoop-2.6.0/ ./hadoop
sudo chown -R hadoop:hadoop ./Hadoop

    解压后还需要验证hadoops是否能用,输入如下指令验证版本信息

cd /usr/local/hadoop
./bin/hadoop version

    然后我们要配置hadoop环境

sudo vim ~/.bashrc

    在文件最后添加如下语句,保存退出:

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    保存后依然要使新的配置生效

souce ~/.bashrc

    由于我们java版本的限制,所以我们还要修改hadoop文件中相关的java环境变量

    文件所在路径:/usr/local/hadoop/etc/hadoop/

    需要修改的俩个文件为: hadoop-env.sh,yarn-env.sh

        hadoop-env.sh

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

    修改:export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161.x86_64

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

            yarn-env.sh

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

   修改:export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.161.x86_64

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)


 

配置分布式环境:

首先需要配置/usr/local/hadoop/etc/hadoop中的5个文件:

(注意master应该与主机名字master一致)

slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

    slave:

  将文件中原来的localhost删除,添加salve1,slave2

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    core-site.xml:

        改为如下配置:

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>m=
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

    hdfs-site.xml:

        改为如下配置:

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

    mapred-site.xml:

        (可能需要重命名,默认文件名为:mapred-site.xml.template),修改如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</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>
</configuration>

yarn-site.xml,还是修改:
<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

    yarn-site.xml:

        修改如下:

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

 

第五步:启动Hadoop

    启动需要在master节点上进行。

    输入如下命令:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

    通过jps指令查看各个节点的启动进程,master节点应该看到NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer进程。slave节点可以看到DataNodeNodeManager 进程。缺少任何一个进程都表示出错。

jps

    如下所示:

    Namenode(master节点)

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    Datanode(slave节点)

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    可以通过master节点上命令查看datanode是否正常启动,如果live datanodes不为0,则说明启动成功。如图,我这里俩个datanode都活了。

hdfs dfsadmin –report

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

    通过 web 页面 http://master:50070/ 可以查看datanode 和nameode 状态

【Hadoop】在Centos环境下配置Hadoop的集群安装(同步更新)

 

 


 

 

附录:

这些仅仅作为自己安装完成后的一个流程备忘,仅仅记录关键流程。

在学习了网上博主的博客后很有感触。在文末我附上对我帮助非常大的博客原地址,希望大家能有不同的启发。

 

创建hadoop用户:

如果作为实验的话root用户也可以,注意备份。

 

安装java环境:

如果要用java写云计算程序,最好用eclipse,可以导入jar包,安装eclipes的前提是java版本2.0+。

直接从官网下的话应该是java8,在windows系统下安装后不需要配环境,linux系统下没试过不知道。

如果相对路径不行,就写绝对路径。

#2018.9.26 更新:

JDK8可行,具体在Ubuntu环境下配置Hadoop分布式集群一文中显示。

 

 

防火墙:

centos在在开启Hadoop之前,需要关闭每一个节点的防火墙。

 


 

特别感谢:

给力星前辈写的非常好,单机和集群俩篇文章对我启发都很大。可以说我的第一个hadoop集群就是在他的博文指导下搭建好的。吃水不忘挖井人,在向前辈表示感谢的同时,特此附上原网址:

http://www.powerxing.com/install-hadoop-in-centos/

-----------------------------------------------------------------------------------------------------