关于hadoop的hdfs集群-kb88凯时官网登录

来自:网络
时间:2023-05-17
阅读:
免费资源网 - https://freexyz.cn/
目录

hdfs 集群是建立在 hadoop 集群之上的,由于 hdfs 是 hadoop 最主要的守护进程,所以 hdfs 集群的配置过程是 hadoop 集群配置过程的代表。

使用 docker 可以更加方便地、高效地构建出一个集群环境。

每台计算机中的配置

hadoop 如何配置集群、不同的计算机里又应该有怎样的配置,这些问题是在学习中产生的。本章的配置中将会提供一个典型的示例,但 hadoop 复杂多样的配置项远超于此。

hdfs 命名节点对数据节点的远程控制是通过 ssh 来实现的,因此关键的配置项应该在命名节点被配置,非关键的节点配置要在各个数据节点配置。也就是说,数据节点与命名节点的配置可以不同,不同数据节点之间的配置也可以有所不同。

但是本章为了方便建立集群,将使用相同的配置文件通过 docker 镜像的形式同步到所有的集群节点,特做解释。

具体步骤

总体思路是这样的,我们先用一个包含 hadoop 的镜像进行配置,配置成集群中所有节点都可以共用的样子,然后再以它为原型生成若干个容器,构成一个集群。

配置原型

首先,我们将使用之前准备的 hadoop_proto 镜像启动为容器:

docker run -d --name=hadoop_temp --privileged hadoop_proto /usr/sbin/init

进入 hadoop 的配置文件目录:

cd $hadoop_home/etc/hadoop

现在对这里的文件的作用做简单的描述:

文件作用
workers记录所有的数据节点的主机名或 ip 地址
core-site.xmlhadoop 核心配置
hdfs-site.xmlhdfs 配置项
mapred-site.xmlmapreduce 配置项
yarn-site.xmlyarn 配置项

注:yarn 的作用是为 mapreduce 提供资源管理服务,此处暂时用不着。

我们现在设计这样一个简单的集群:

  • 1 个命名节点 nn
  • 2 个数据节点 dn1, dn2

首先编辑 workers ,更改文件内容为:

dn1
​​​​​​​dn2

然后编辑 core-site.xml,在 中添加以下配置项:


    fs.defaultfs
    hdfs://nn:9000


    hadoop.tmp.dir
    file:///home/hadoop/tmp

配置 hdfs-site.xml,在 中添加以下配置项:


    dfs.replication
    2


    dfs.namenode.name.dir
    file:///home/hadoop/hdfs/name

最后需要配置一下 ssh :

ssh-keygen -t rsa -p "" -f ~/.ssh/id_rsassh-copy-id -i ~/.ssh/id_rsa hadoop@localhost

到此为止,集群的原型就配置完毕了,可以退出容器并上传容器到新镜像 cluster_proto :

docker stop hadoop_tempdocker commit hadoop_temp cluster_proto

此处如果有必要可以删除临时镜像 hadoop_temp 。

部署集群

接下来部署集群。

首先,要为 hadoop 集群建立专用网络 hnet :

docker network create --subnet=172.20.0.0/16 hnet

接下来创建集群容器:

docker run -d --name=nn --hostname=nn --network=hnet --ip=172.20.1.0 --add-host=dn1:172.20.1.1 --add-host=dn2:172.20.1.2 --privileged cluster_proto /usr/sbin/init
docker run -d --name=dn1 --hostname=dn1 --network=hnet --ip=172.20.1.1 --add-host=nn:172.20.1.0 --add-host=dn2:172.20.1.2 --privileged cluster_proto /usr/sbin/init
docker run -d --name=dn2 --hostname=dn2 --network=hnet --ip=172.20.1.2 --add-host=nn:172.20.1.0 --add-host=dn1:172.20.1.1 --privileged cluster_proto /usr/sbin/init

进入命名节点:

docker exec -it nn su hadoop

格式化 hdfs:

hdfs namenode -format

如果没有出错,那么下一步就可以启动 hdfs:

start-dfs.sh

成功启动之后,jps 命令应该能查到 namenode 和 secondarynamenode 的存在。命名节点不存在 datanode 进程,因为这个进程在 dn1 和 dn2 中运行。

至此,你可以检测 hdfs 的运行,使用 hdfs 的方式也没有差别(命名节点代表整个集群)。 

免费资源网 - https://freexyz.cn/
返回顶部
顶部
网站地图