zoukankan      html  css  js  c++  java
  • Hadoop学习(一):完全分布式集群环境搭建

    1. 设置免密登录

    (1) 新建普通用户hadoop:useradd hadoop
    (2) 在主节点master上生成密钥对,执行命令ssh-keygen -t rsa便会在home文件夹下生成 .ssh 文件以及id_rsa和id_rsa.pub文件 注意:.ssh文件夹的权限为700,否则会影响其他机器的免密登录
    (3) 执行命令:

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

    chmod 600 authorized_keys #修改文件的权限为600

    (4) 将authorized_keys文件拷贝到下一个主机上后重复上述操作。

    scp ~/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys

    若拷贝出错,则在.ssh文件 可手动建立,但是注意修改其权限为700:chmod 700 .ssh
    。。。
    以此类推,最终在最后一个节点上的authorized_keys上包括了所有主机的公钥,再将它拷贝到其他节点上,完成免密登录的设置。

    2.设置hosts文件

    本人搭建的Hadoop环境包括有一个主节点和三个从节点,配置为:一个NameNode,一个SecondaryNameNode以及两个DataNode。
    /etc/hosts添加配置如下

    10.0.209.122 master122 hadoop-NameNode-122
    10.0.209.123 slave123 hadoop-SecondaryNameNode-123
    10.0.209.124 slave124 hadoop-DataNode-124
    10.0.209.125 slave125 hadoop-DataNode-125

    在一个主机上配置完成后,将该文件拷贝到其他节点之上。

    3.安装Hadoop

    首先,在master节点上,使用root用户在/usr/local/文件夹下新建hadoop文件夹,并修改该文件夹对普通用户有读写权限

    mkdir /usr/local/hadoop

    chmod 777 /usr/local/hadoop

    使用普通用户hadoop登录:su hadoop
    下载jdk1.8安装包以及hadoop的安装包,并加压文件到/usr/local/hadoop下

    wget wget http://apache.claz.org/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz

    tar -xzvf hadoop-2.8.1.tar.gz -C /usr/local/hadoop

    加压后/usr/local/hadoop/文件夹下包含jdk1.8以及hadoop2.8.1,
    切换到root用户,编辑/etc/profile文件

    JAVA_HOME=/usr/local/hadoop/jdk1.8.0_102

    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.1

    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    export JAVA_HOME

    export PATH

    export HADOOP_HOME

    export CLASSPATH

    保存后执行source /etc/profile 使其立即生效。
    然后执行java -version和hadoop version验证,配置安装成功。

    4.配置Hadoop集群

    (1). 配置core-site.xml

    修改Hadoop核心配置文件/usr/local/hadoop/etc/hadoop/core-site.xml,通过fs.default.name指定NameNode的IP地址和端口号,通过hadoop.tmp.dir指定hadoop数据存储的临时文件夹。

    <configuration>

    <property>

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

    <value>file:/usr/local/hadoop/hadoop-2.8.1/tmp</value>

    <description>Abase for other temporary directories.</description>

    </property>

    <property>

    <name>fs.defaultFS</name>

    <value>hdfs://master122:9000</value>

    </property>

    </configuration>

    特别注意:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删除,必须重新执行format才行,否则会出错。
    (2).配置hdfs-site.xml

    修改HDFS核心配置文件/usr/local/hadoop/etc/hadoop/hdfs-site.xml,通过dfs.replication指定HDFS的备份因子为3,通过dfs.name.dir指定namenode节点的文件存储目录,通过dfs.data.dir指定datanode节点的文件存储目录。

    <configuration>

    <property>

    <name>dfs.replication</name>

    <value>3</value>

    </property>

    <property>

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

    <value>/usr/local/hadoop/hdfs/name</value>

    </property>

    <property>

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

    <value>/usr/local/hadoop/hdfs/data</value>

    </property>

    <property>

    <name>dfs.namenode.secondary.http-address</name> #配置SecondaryNameNode

    <value>slave123:50090</value>

    </property>

    </configuration>

    (3).配置mapred-site.xml

    拷贝mapred-site.xml.template为mapred-site.xml,再进行修改。

    cp /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml

    vi /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/mapred-site.xml

    <property>

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

    <value>yarn</value>

    </property>

    <property>

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

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

    </property>

    </configuration>

    (4).配置yarn-site.xml

    <!-- Site specific YARN configuration properties –>

    <property>

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

    <value>mapreduce_shuffle</value>

    </property>

    <property>

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

    <value>hadoop-master</value>

    </property>

    </configuration>

    (5).配置masters文件

    增加/usr/local/hadoop/etc/hadoop/masters文件,该文件指定namenode节点所在的服务器机器。添加namenode节点的主机名master122;不建议使用IP地址,因为IP地址可能会变化,但是主机名一般不会变化。另外,为将SecondaryNameNode与NameNode分开,可将SecondaryNameNode节点的主机也加入到masters文件之中。

    master122

    slave123

    (6).配置slaves节点(Master主机特有)

    修改/usr/local/hadoop/etc/hadoop/slaves文件,该文件指定哪些服务器节点是datanode节点。删除locahost,添加所有datanode节点的主机名,如下所示。

    vi /usr/local/hadoop/hadoop-2.8.1/etc/hadoop/slaves

    slave123
    slave124
    slave125

    (7).配置hadoop-env.sh文件

    修改jdk的目录,以及集群间免密互连的端口(由于本人修改了ssh的默认端口,而hadoop默认是以22端口连接,所以需要进行添加配置)

    export JAVA_HOME=/usr/local/hadoop/jdk1.8.0_102 #修改jdk路径

    export HADOOP_SSH_OPTS="-p 22000" #添加ssh自定义端口

    (8).配置ssh客户端配置

    由于修改了ssh的默认端口,使得在使用ssh以及scp时都要加上-p/-P 非常的繁琐(主要是因为懒是人类进步的阶梯),所以修改ssh的客户端配置,使其默认配置端口为自定义端口。

    vi /etc/ssh/ssh_config

    Port 22000 #将源端口22修改为自定义端口22000

    5.同步配置到其他节点

    第4步配置是在主节点master上进行的配置,下面要将上述配置好的jdk以及hadoop软件包拷贝到其他从节点上,首先在各个从节点建立文件夹/usr/local/hadoop,并将其权限设置为777,然后用普通用户hadoop执行命令:

    scp -r /usr/local/hadoop/* slave123:/usr/local/hadoop/ &

    scp -r /usr/local/hadoop/* slave124:/usr/local/hadoop/ &

    scp -r /usr/local/hadoop/* slave125:/usr/local/hadoop/ &

    由于已经配置ssh客户端的连接端口,所以这里不需要特意指定,加‘&’因为hadoop/下包含jdk以及hadoop软件包,文件很大,放入后台执行更方便。
    下面继续将/etc/profile下的JAVA_HOME和HADOOP_HOME配置同步配置到其他节点,至此集群的搭建配置完成。

    6.启动集群

    在主节点master上进入到/usr/local/hadoop/hadoop-2.8.1/执行命令:

    bin/hadoop namenode -format #格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

    然后启动hadoop:

    sbin/start-all.sh

    执行jps命令查看运行情况
    通过简单的jps命令虽然可以查看HDFS文件管理系统、MapReduce服务是否启动成功,但是无法查看到Hadoop整个集群的运行状态。我们可以通过hadoop dfsadmin -report进行查看。用该命令可以快速定位出哪些节点挂掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。
    停止hadoop命令:sbin/stop-all.sh

    至此,hadoop集群搭建配置完毕。

    7.可能的错误

    The authenticity of host ‘0.0.0.0 (0.0.0.0)’ can’t be established.

    解决方案:关闭SELINUX

    -- 关闭SELINUX
    # vim /etc/selinux/config
    -- 注释掉
    #SELINUX=enforcing
    #SELINUXTYPE=targeted
    -- 添加
    SELINUX=disabled
  • 相关阅读:
    unexpected inconsistency;run fsck manually esxi断电后虚拟机启动故障
    centos 安装mysql 5.7
    centos 7 卸载mysql
    centos7 在线安装mysql5.6,客户端远程连接mysql
    ubuntu 14.04配置ip和dns
    centos7 上搭建mqtt服务
    windows eclipse IDE打开当前类所在文件路径
    git 在非空文件夹clone新项目
    eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
    Eclipse Kepler中配置JadClipse
  • 原文地址:https://www.cnblogs.com/herblog/p/9305488.html
Copyright © 2011-2022 走看看