hdfs-site.xml 用于添加新的数据节点

Posted

技术标签:

【中文标题】hdfs-site.xml 用于添加新的数据节点【英文标题】:hdfs-site.xml for adding a new datanode 【发布时间】:2016-06-17 08:10:48 【问题描述】:

我已经以伪分布式模式(machine-1)安装了hadoop 2.7.2。我想向它添加一个新的datanode以使其成为一个集群。As,但问题是两台机器都有不同的磁盘分区。

我在新数据节点(machine-2)中安装了相同版本的hadoop 2.7.2,也可以与machine-1 ssh。在google了很多网站后,都有共同的教程提到,我们必须有相同的配置文件里面/etc/hadoop/ 文件夹。

综上所述,我在 machine-1 中的现有配置是:

core-site.xml

    <configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/home1/tmp</value>
                <description>A base for other temporary directories

    <property>
                <name>fs.default.name</name>
                <value>hdfs://CP000187:9000</value>
    </property>

    <property>
        <name>hadoop.proxyuser.vasanth.hosts</name>
        <value>*</value>
     </property>

    <property>
        <name>hadoop.proxyuser.vasanth.groups</name>
        <value>*</value>
    </property>
    </configuration>

hdfs-site.xml:

<configuration>
     <property>
            <name>dfs.replication</name>
            <value>1</value>
     </property>
     <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/home1/hadoop_data/hdfs/namenode</value>
     </property>
     <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/home1/hadoop_store/hdfs/datanode</value>
     </property>
     <property>
            <name>dfs.permissions</name>
            <value>false</value>
     </property>
</configuration>

/home1 是安装在 machine1 中的磁盘。

Machine-2 挂载了两个磁盘,即 /hdd1 和 /hdd2。

现在,我应该在新机器 (machine-2) 上的 hdfs-site.xml 中指定什么以同时使用 hdd1 和 hdd2?

所有节点的dfs.data.dir的值是否应该相同?

machine2 上的hdfs-site.xml 是否需要dfs.namenode.name.dir 属性(因为它不是名称节点)?

我的简化问题是否也必须在从节点中复制主节点配置文件?请帮我解决这个问题..

【问题讨论】:

【参考方案1】:

您只需将整个 hadoop 文件夹从 node1 复制到 node2 。所以在这两种配置中都应该指向 hdfs://CP000187:9000 。您不必在 node2 中进行任何附加设置。

要在 node2 中启动 datanode 运行(从 sbin)。您只需要在 node2 中运行 datanode 和 nodemanager 进程

./hadoop-daemon.sh start datanode

要检查datanode是否添加正确,请在node1中运行dfsadmin -report

hadoop dfsadmin -report 

输出:

Configured Capacity: 24929796096 (23.22 GB)
Present Capacity: 17852575744 (16.63 GB)
DFS Remaining: 17851076608 (16.63 GB)
DFS Used: 1499136 (1.43 MB)
DFS Used%: 0.01%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

-------------------------------------------------
Live datanodes (2):

【讨论】:

我的主节点数据目录不同,新节点数据目录不同。如果我只是复制文件,它如何知道存储数据的位置? 然后将 hdfs-site.xml 中的 dfs.datanode.data.dir 编辑到 node2 中的特定位置。 namenode 和 datanode 之间的所有通信都是基于端口的。不基于文件系统 hadoopp-daemon.sh 已弃用。请改用hdfs --daemon start datanode【参考方案2】:

在下面添加数据节点检查

    复制core-site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml and hadoop-env.sh文件到新机器hadoop目录

    在 /etc/hosts 中添加 ip 地址或主机名

    slaves file中添加新datanode的ip地址(位于/etc/hadoop/

    正如您提到的,您有 2 个硬盘,请在 hdfs-site.xml 文件中提及这些位置,如下所示 <name>dfs.datanode.data.dir<name> <property>/hdd1,/hdd2<property>

    重启服务

【讨论】:

在你的第四步我应该修改两台机器上的 hdfs-site.xml 吗?如果是这样,主节点无法识别这样的文件夹,因为它是一个本地路径 您必须提及可用的位置(新机器) 所以我必须在主节点 hdfs-site.xml 和 /hdd1,/hdd2 中为 dfs.data.dir 提供新节点 hdfs-site.xml 中的 /home1? 在 hadoop 3.0 从属文件已重命名为 etc/hadoop/workers。

以上是关于hdfs-site.xml 用于添加新的数据节点的主要内容,如果未能解决你的问题,请参考以下文章

简述hdfs-site.xml配置文件中需要配置的三个属性名称及其含义?

hadoop hdfs (java api)

在哪个节点上编辑 hadoop .xml 文件?

namenode节点无法启动的解决方案:

0110-如何给Kerberos环境下的CDH集群添加Gateway节点

为啥hadoop没有将数据放在hdfs-site.xml中指定的目录中