Hadoop HDFS 3.2的部署

之前写过HDFS 2.6的部署,最近项目中尝试使用最新的HDFS 3.2.1做离线存储,部署方式略有不同,所以这里再简单写一下,这里只涉及到存储因此不再配置yarn,只配置HDFS最基本的服务NameNode、DataNode、以及SecondaryNameNode,我这里用到的包是hadoop-3.2.1.tar.gz

部署之前主机名&hosts,防火墙,ssh互信,jdk这些都不用说了,一定要提前配置标准,jdk用1.8即可,我这里6台机器,计划是其中1个NameNode,1个SecondaryNameNode,6个都是DataNode,当然这里是最简单的配置没有做NameNode高可用,这个放到后来再写,由于hdfs每个节点配置都完全一样,所以在一个节点配置好发送到其他节点就可以啦,下面开始配置:

1). 解压hadoop到指定位置

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:54c0f675-6cee-4e78-abed-1d6edee536dd

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a2135a84-6a9f-4357-b796-4a97199fa5c7

2). 编辑etc/hadoop/core-site.xml,在填入下面的配置:

fs.defaultFS和之前2.6配置一样,写namenode的主机名和自己定义的端口,由于9000有冲突,因此我这里用9001

io.file.buffer.size这个是写文件操作的缓冲区大小,默认是4096B,这里调大为128k

我这里配置上面两个就够了,另外还有临时文件目录hadoop.tmp.dir选项,需要也可以添加一下,完整的默认配置列表参考链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml,对应当前目录下的share/doc/hadoop/hadoop-project-dist/hadoop-common/core-default.xml文件可以详细查看其它的参数

3). 编辑etc/hadoop/hdfs-site.xml,在填入下面的配置:

dfs.namenode.name.dir 配置namenode数据目录,这个目录启动时会自动创建

dfs.hosts 这个配置允许连接到namenode的主机列表,默认允许所有的主机,其实为了安全可以配置上集群所有节点的地址,对于集群内部所有节点的访问不限制,然后再根据需要添加外部客户端机器等,这里直接在本地磁盘创建一个文件即可,里面直接罗列所有的主机名,我这里是和配置文件放到了一块,方便同步到其他节点

dfs.blocksize 单个block的大小,hdfs上传文件会把文件按照块打散,这里使用的就是默认值,为256M

dfs.namenode.handler.count namenode处理rpc请求的并发数,默认是100,如果有更多的datanode或者并发比较高,则这里可以调大

dfs.datanode.data.dir datanode数据的本地存储目录,如果有多块盘可以用逗号分隔多个目录,这个目录启动时会自动创建

dfs.namenode.http-address 配置namenode界面,默认值就是:0.0.0.0:9870

dfs.replication 配置文件存储的副本数,默认为3

dfs.namenode.checkpoint.dir 配置检查节点的数据目录,即secondarynamenode的数据目录,这个目录启动时会自动创建

完成的默认配置参考链接:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml或当前目录下的文件share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

4). 配置etc/hadoop/hadoop-env.sh

必须配置的项是JAVA_HOME,如果安装java时已经配置到/etc/profile则可以不用配置,因为我这里是openjdk所以需要配置一下:export JAVA_HOME=/usr

HADOOP_HOME 建议配置一下,我这里是:export HADOOP_HOME=/opt/hadoop

HADOOP_LOG_DIR 日志目录,默认就是hadoop安装目录下的logs

HADOOP_PID_DIR hdfs服务的pid目录,默认是在/tmp

另外还有一些配置根据需要进行修改,当然上面这些配置都可以通过linux shell环境变量的方式设置,配置到/etc/profile或者/etc/profile.d/下面的变量文件中

5). 分发节点 & 格式化namenode & 启动服务

配置完上面的这些hdfs就算基本设置好了,然后可以将目录发送到所有的其他节点,然后再每个机器分别启动对应的服务,比如我这里节点1是namenode服务,节点2是secondarynamenode服务,节点1~6都是datanode服务,其中namenode服务和secondarynamenode服务最好分开不同的节点启动,发送完成之后先格式化namenode:

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c95593ab-f48b-4f8a-8a51-db5ec21a1d01

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:308ffeaa-288c-4f49-ab92-f4d52083b8df

这样就启动服务了,执行jps可以看到对应节点的对应的进程名,然后可以浏览器访问http://namenode ip:9870可以看到namenode的界面

单独停止服务也非常简单,只需要将上面命令的start改成stop即可

6). 统一启动

上面单独启动的方式可能比较麻烦,也可以使用sbin/start-dfs.sh和sbin/stop-dfs.sh统一启动和停止,启动之前要配置hdfs的用户,否则会报错找不到对应的配置,其实是推荐使用hdfs专用的用户来启动而不是用root来启动,上面为了方便直接用root配置的,正常来说应该有hdfs专门的用户才对,现在修改etc/hadoop/hadoop-env.sh配置用户:

为了方便这里都配置成root,然后编辑etc/hadoop/workers文件里面默认是localhost,要修改成所有datanode节点的列表,启动时脚本会自动读取这个文件来启动datanode节点,格式和上面咱们配置的dfs.hosts完全一样,配置好了之后,然后就可以执行 sbin/start-dfs.sh 直接启动整个集群了,注意这个脚本默认启动的secondarynamenode节点和namenode是同一个节点,如果想更换节点还需要手动的进行调整.

上面就是hadoop hdfs 3存储部分的基本配置了,经过上面配置就可以开始使用hdfs进行文件的存储读取等操作了,更多的配置以后再继续分享,部署参考文档:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/ClusterSetup.html

Original: https://www.cnblogs.com/freeweb/p/13065756.html
Author: 小得盈满
Title: Hadoop HDFS 3.2的部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562305/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球