# 如何搭建HDFS集群
## 综述
本篇文章只是用于demo的HDFS集群搭建教程,用于跑通ElasticCTR的各个流程。本文将会带着大家在百度云的节点上搭建一个HDFS,并将Criteo数据集按照ElasticCTR的数据集格式要求,存放在HDFS上。
## 购买BCC
搭建 HDFS 集群的过程较为复杂,首先需要购买一个 BCC 实例
在 BCC 实例当中购买较大的 CDS 云磁盘。
## 安装并启动Hadoop
在进入 BCC 之后首先需要用 fdisk 工具确认分区是否已经安装。
选择 hadoop-2.8.5.tar.gz。下载后解压把 hadoop-2.8.5 目录 move 到/usr/local 目录下。 在/usr/local/hadoop-2.8.5/etc/hadoop/下,编辑 core-site.xml文件,修改为
```
fs.defaultFS
hdfs://${LOCAL_IP}:9000
hadoop.tmp.dir
/data/hadoop
```
此处 `$LOCAL_IP` 推荐用内网的 IP,也就是在 ifconfig 下为 `192.168` 开头的 IP,在 K8S 当中也可以被访问 到。
在 `slave` 文件下输入 `root@127.0.0.1`
接下来配置无密码访问,首先要 `ssh-keygen`,无论提示什么全部回车数次之后,用 `ssh-copy-id` 命令把无密码访问配置到 `127.0.0.1` ,`localhost` ,`0.0.0.0` 几个 IP 地址。
把`/usr/local/hadoop-2.8.5/etc/hadoop` 设置为 `$HADOOP_HOME`
再把`$HADOOP_HOME/bin` 放在 `$PATH` 下。如果输入 `hadoop` 命令可以被执行,就执行 `hadoop namenode format`。
最后在`/usr/local/hadoop-2.8.5/sbin` 目录下运行 ,`start-all.sh`。
以上操作之后,HDFS 服务就启动完毕,接下来就创建流式训练的文件夹 `/train_data/`,使用命令 `hdfs dfs -mkdir hdfs://$IP:9000/train_data/`
## 复制Criteo数据集到HDFS
接下来从 `https://paddle-serving.bj.bcebos.com/criteo_ctr_example/criteo_demo.tar.gz` 下载数据集,解压之后在criteo_demo下
执行
`hdfs dfs -put * hdfs://$IP:9000/train_data/20200401`
`$IP`就是先前到HDFS地址。
这样,就在train_data下目录到20200401目录下存放了5个小时的训练集。20200401可以改动成任意一个日期。
在主页面的教程中,`data.config`文件就是用来现在配置的HDFS信息,日期信息会在这里被调用。