hadoop完全分布式环境搭建

搭建完全分布式时,先搭建好伪分布式,在其基础上做修改 参考: 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,也就是数据节点,如下图所示

hadoop完全分布式环境搭建

 

 

hadoop完全分布式环境搭建

 

 

 

 

 

 需要注意的是,这里的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查看是否已启动

hadoop完全分布式环境搭建

 

 在slave01使用jps查看

hadoop完全分布式环境搭建

 

 在slave02使用jps查看

hadoop完全分布式环境搭建

 

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

hadoop完全分布式环境搭建

 

 

 

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

hadoop完全分布式环境搭建

 

 常见错误:

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,再重启即可

hadoop完全分布式环境搭建

 

上一篇:大数据面试题5


下一篇:大数据学习总结08