我怎样才能增加hdfs容量

时间:2013-10-23 12:49:46

标签: hadoop hdfs

如何将hadoop DFS的配置容量从默认的50GB增加到100GB?

我目前的设置是在一台使用120GB 450GB的centOS6机器上运行的hadoop 1.2.1。使用“Hadoop the Definitive Guide 3'rd”中建议的/ conf设置hadoop处于psudodistributed模式。 hdfs-site.xml只有一个已配置的属性:

   <configuration>
    <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
 </configuration>

以下行没有给出错误反馈......回到提示符。

hadoop dfsadmin -setSpaceQuota 100g  /tmp/hadoop-myUserID

如果我处于重生循环中(已执行

 rm -rf /tmp/hadoop-myUserId  

试图“从头开始”)如果我已执行了iff-only-only,那么setSpaceQuota看似成功了

  start-all.sh
  hadoop namenode -format

我的dfs容量配置失败由

显示
 hadoop dfsadmin -report

显示相同的50GB配置容量。

如果这是获得100GB hdfs配置容量的当前最佳方式,我愿意切换到hadoop 2.2(现在稳定版本)。   似乎应该有hdfs-site.xml的配置属性,这将允许我使用更多的免费分区。

2 个答案:

答案 0 :(得分:4)

将hdfs的位置设置为具有更多可用空间的分区。 对于hadoop-1.2.1,这可以通过设置hadoop.tmp.dir来完成 hadoop-1.2.1 / conf / core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <property>
      <name>fs.default.name</name>
     <value>hdfs://localhost:9000</value>
     </property>
   <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/myUserID/hdfs</value>
    <description>base location for other hdfs directories.</description>
   </property>
</configuration>

运行

df

说我的_home分区是我的硬盘,减去50GB我的/ (_root)分区。 hdfs的默认位置是 的/ tmp / Hadoop的myUserId 在/ partition中。这是我最初的50GB hdfs大小的来源。

通过

完成hdfs目录的分区位置的创建和确认
mkdir ~/hdfs
df -P ~/hdfs | tail -1 | cut -d' ' -f 1

成功实施是由

完成的
stop-all.sh
start-dfs.sh
hadoop namenode -format
start-all.sh
hadoop dfsadmin -report

将hdfs的大小报告为我的_home分区的大小。

感谢jtravaglini的评论/线索。

答案 1 :(得分:0)

停止所有服务:stop-all.sh

然后在增加hdfs-site.xml中的存储大小方面添加这些属性:

    <property>
        <name>dfs.disk.balancer.enabled</name>
        <value>true</value>
</property>
<property>
        <name>dfs.storage.policy.enabled</name>
        <value>true</value>
</property>
<property>
        <name>dfs.blocksize</name>
        <value>134217728</value>
</property>
<property>
        <name>dfs.namenode.handler.count</name>
        <value>100</value>
</property>
 <property>
         <name>dfs.namenode.name.dir</name>
         <value>file:///usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop_store/hdfs/datanode,[disk]file:///hadoop_store2/hdfs/datanode</value>
</property> 

还要记得将[disk]放在文件夹中包含额外的磁盘,[ssd]用于专用的额外ssd驱动器。永远记得检查&#34; ///&#34;三联&#34; /&#34;对于目录指向。

之后,

通过给出命令

来格式化namenode以获取在Hadoop集群中继承的设置

hadoop namenode -format 然后从头开始服务: Start-all.sh

&#34; / * 请记住,在没有格式化hdfs的情况下,设置将不会被激活,因为它将在dfs.datanode.data.dir中搜索Blockpool Id(BP_ID),对于新位置,它将会找不到任何BP_ID。&#34; / *