zoukankan      html  css  js  c++  java
  • hadoop2.x完全分布式环境搭建

    搭建完全分布式时,先搭建好伪分布式,在其基础上做修改 参考: url: https://www.cnblogs.com/gzgBlog/p/13703051.html

    完全分布式安装

    伪分布式是基于单个节点,而完全分布式是基于两个或两个以上节点完成Hadoop集群搭建。

    下面基于两个节点完成,一个节点的名字是master,另一个节点的名字是slave01。

    关于搭建伪分布式和完全分布式,主要区别体现在core-site.xml和hdfs-site.xml的配置不一样,完全分布式会包含更多信息,下面会逐步说明。

    1.修改core-site.xml

    文件core-site.xml文件中,hadoop.tmp.dir是Hadoop文件系统依赖的基础配置,默认存放在/tmp/{$user}下。但是存放在/tmp下是不安全的,因为系统重启后文件有可能被删除,所以会指向另外的路径。

    <configuration>
            <property>
                    <name>fs.default.name</name>
                    <value>hdfs://master:9000</value>
            </property>
            <property>
                    <!-- save tmp file -->
                    <name>hadoop.tmp.dir</name>
                    <value>/app/hadoop-2.2.0/hdfs/tmp</value>
            </property>
    </configuration>

    2.修改hdfs-site.xml文件

    这里主要配置了Secondary NameNode的信息,其中slave01是从节点机器名

    <configuration>
            <property>
                    <name>dfs.namenode.secondary.http-address</name>
                    <value>slave01:50090</value>
            </property>
            <property>
                    <name>dfs.namenode.secondary.https-address</name>
                    <value>slave01:50091</value>
            </property>
            <property>
                    <!--hdfs的副本数量-->
                    <name>dfs.replication</name>
                    <value>2</value>
            </property>
            <property>
                    <!--存储namenode的路径-->
                    <name>dfs.name.dir</name>
                    <value>/app/hadoop-2.2.0/hdfs/name</value>
            </property>
            <property>
                    <!--存储上传数据的路径-->
                    <name>dfs.data.dir</name>
                    <value>/app/hadoop-2.2.0/hdfs/data</value>
            </property>
            <property>
                    <!--设置为false可以不用检查权限-->
                    <name>dfs.permission</name>
                    <value>false</value>
            </property>
    
    
    </configuration>

    3.配置masters和slaves

    接着需要在配置文件目录/app/hadoop-2.2.0/etc/hadoop下生成masters和slaves文件,

    并在masters文件中写入master,在slaves文件中写入master和slave,其中slaves文件存放的是datanode,也就是数据节点,如下图所示

     需要注意的是,这里的master和slave是节点名称,需要与/etc/hosts中的配置相映射。

    4.相关文件的复制在完全分布式的环境中

    master和slave节点上的文件需要一致,因此这里需要将master节点中的文件复制到slave节点中,主要包括以下文件:·Hadoop整个文件夹,如/opt/software/hadoop-2.5.1下面的所有文件。·系统配置文件,如/etc/profile文件,其中包含各类环境变量的配置。·/etc/hosts文件。操作步骤如下:

    (1)复制Hadoop整个文件夹。复制文件夹需要使用scp-r指令:

    scp -r /app/hadoop-2.2.0 root@slave01:/app/

    (2)复制/etc/profile到salve的Home目录。

    scp /etc/profile root@slave01:/etc/profile 

    (3)复制/etc/hosts文件,命令如下:

    scp /etc/hosts root@slave02:/etc/hosts

    5.启动hdfs  

    注意,如果提前启动过,并且创建了文件一定要删除,之后一定要先格式化hdfs  使用 Hadoop namenode -format

    在master使用 start-dfs.sh启动,并使用jps查看是否已启动

     在slave01使用jps查看

     在slave02使用jps查看

     使用浏览器访问: http://192.168.10.11:50070

     可看到有三个活跃的datanode,点进去查看,看到如下图所示说明没问题。

     常见错误:

    2020-09-21 01:42:11,607 INFO org.mortbay.log: Started SelectChannelConnector@0.0.0.0:50075
    2020-09-21 01:42:11,954 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened IPC server at /0.0.0.0:50020
    2020-09-21 01:42:11,965 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Refresh request received for nameservices: null
    2020-09-21 01:42:11,973 INFO org.apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 50020
    2020-09-21 01:42:11,979 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
    2020-09-21 01:42:11,981 WARN org.apache.hadoop.hdfs.server.common.Util: Path /app/hadoop-2.2.0/hdfs/data should be specified as a URI in configuration files. Please update hdfs configuration.
    2020-09-21 01:42:11,987 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to master/192.168.10.11:9000 starting to offer service
    2020-09-21 01:42:12,019 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
    2020-09-21 01:42:12,019 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting
    2020-09-21 01:42:12,117 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /app/hadoop-2.2.0/hdfs/data/in_use.lock acquired by nodename 6519@master
    2020-09-21 01:42:12,118 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-1291136958-192.168.10.11-1600623703239 (storage id DS-1413256501-192.168.10.11-50010-1600622208949) service to master/192.168.10.11:9000
    java.io.IOException: Incompatible clusterIDs in /app/hadoop-2.2.0/hdfs/data: namenode clusterID = CID-c4d72e93-4c05-4dcc-adbf-f2cb597aadb7; datanode clusterID = CID-26056e85-5aca-491f-b946-666b5e847dd8
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:391)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:191)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:219)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:837)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:808)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:280)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:222)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:664)
        at java.lang.Thread.run(Thread.java:748)
    2020-09-21 01:42:12,119 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-1291136958-192.168.10.11-1600623703239 (storage id DS-1413256501-192.168.10.11-50010-1600622208949) service to master/192.168.10.11:9000
    2020-09-21 01:42:12,220 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-1291136958-192.168.10.11-1600623703239 (storage id DS-1413256501-192.168.10.11-50010-1600622208949)
    2020-09-21 01:42:14,221 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
    2020-09-21 01:42:14,223 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
    2020-09-21 01:42:14,225 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
    /************************************************************
    SHUTDOWN_MSG: Shutting down DataNode at master/192.168.10.11
    ************************************************************/
    2020-09-21 01:49:04,582 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG: 
    /************************************************************

    此处为,提前启动没成功,但是已创建,hdfs的数据及临时文件存放目录,删除之后,格式化hdfs,再重启即可

    author@nohert
  • 相关阅读:
    mysql架构篇之复制模式
    mysql架构篇之一主从从结构
    mysql架构篇之主从结构
    架构师的成长之路初片~Nginx篇~平滑升级
    架构师之成长之路~ceph~报错集
    架构师的成长之路初片~DNS
    python3.x~安装第三方模块
    架构师的成长之路初片~Ceph-object存储~及ceph常用命令
    架构师的成长之路初片~Ceph-block存储
    C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13703264.html
Copyright © 2011-2022 走看看