在hadoop单节点集群上添加EBS卷

时间:2017-12-15 12:32:13

标签: hadoop amazon-ec2 storage instance

我已在EC2云上创建了一个AWS Linux计算机,其根卷为8 GB,然后在该计算机上部署了hadoop和spark并创建了单节点群集

当我打开hadoop的主页时,我看到一切都很好。

Configured Capacity:    7.74 GB
DFS Used:   3.72 MB (0.05%)
Non DFS Used:   4.47 GB
DFS Remaining:  3.27 GB (42.23%)
Block Pool Used:    3.72 MB (0.05%)
到目前为止,一切都很好。现在我想在这个EC2实例上添加更多存储空间。所以我采用了 40GB的EBS块存储,并在其上创建了一个 ext4 文件系统,并将其挂载到EC2实例的 / data 目录。 使用 df -h 命令,我可以看到空间全部已安装且正确可用。 `

Filesystem      Size  Used Avail Use% Mounted on
 udev            3.9G   12K  3.9G   1% /dev
tmpfs           799M  400K  799M   1% /run
/dev/xvda1      7.8G  4.1G  3.3G  56% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none            3.9G     0  3.9G   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdb        40G   48M   38G   1% /data

但是在hadoop页面(http://*<myec2-ip>*:50050/)上,我仍然看到相同的7.74GB容量,并且没有看到增加的容量。

我甚至尝试重新格式化hadoop文件系统,但这也没有帮助。
bin / hadoop namenode -format

如何在hadoop文件系统上添加此附加存储?

2 个答案:

答案 0 :(得分:0)

您需要编辑hdfs-site.xml以在该新卷中安装目录以放置您的namenode或datanode数据。

dfs.datanode.data.dir - 确定DFS数据节点应在何处存储其块的本地文件系统。如果这是逗号分隔的目录列表,则数据将存储在所有已命名的目录中,通常位于不同的设备上

dfs.namenode.name.dir - 确定DFS名称节点应存储名称表(fsimage)的本地文件系统的位置。如果这是逗号分隔的目录列表,那么名称表将在所有目录中复制,以实现冗余

然后您需要重新启动相应的HDFS服务

尽量避免格式化namenode。执行

时会丢失所有HDFS数据

答案 1 :(得分:0)

我所做的是以下内容:

  1. 在/etc/hadoop/hdfs-site.xml文件中添加了以下配置

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/data</value>
    </property>
    
  2. 由于/data是我将新EBS卷安装到的目录。

    1. 我使用以下命令停止了hadoop和yarn服务:

      $HADOOP_HOME/sbin/stop-dfs.sh
      $HADOOP_HOME/sbin/stop-yarn.sh
      
    2. 当我使用 hadoop 用户运行我的hadoop服务器时,我将 hadoop 用户作为所有者/ data使用以下命令

      sudo chown hadoop /data
      
    3. 然后我再次重新启动了hadoop服务。

      $HADOOP_HOME/sbin/start-dfs.sh
      $HADOOP_HOME/sbin/start-yarn.sh