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配置文件中需要配置的三个属性名称及其含义?