前言
大数据对实时性数据要求越来越高,以往的拉姆达n+1的架构,在很多业务场景中已经不再适用。近几年湖仓一体被提上日程、其中数据湖为最重要的一环、譬如iceberg、hudi、
delta lake诸多优秀的数据湖框架应用而生。数据湖可以做到近实时、延迟可以降低到分钟级别。
但是数据湖使用过程中小文件是系统最头疼的一个环节、众所周知小文件对于HDFS是最大的诟病。因此对象存储如雨后春笋一般大量涌现、先后有腾讯云对象存储、
百度云对象存储、阿里云等等。这些均为云厂商、社区可扩展对象存储并不多、其中以Ozone(HDDS),由Hadoop原创团队+腾讯研发团队共同维护,基于Apache的背景、发展前景非常不错。
Ozone最新的1.2.1支持SCM(前文已经有介绍)和OM(前文已经有介绍)高可用。本文讲解基本的Ozone 高可用的搭建。希望对读者有一定的启发。
角色和服务器分配
机器角色分配
服务器主机名 | 服务器ip地址 | 角色 |
---|---|---|
jykj0.yarn.com | 10.10.2.101 | OM/SCM/RECON(监控页面) |
jykj1.yarn.com | 10.10.2.102 | OM/SCM |
jykj2.yarn.com | 10.10.2.103 | OM/SCM |
jykj3.yarn.com | 10.10.2.104 | DataNode |
jykj4.yarn.com | 10.10.2.105 | DataNode |
核心配置文件
分发配置文件到所有的 /opt/ozone/etc/hadoop目录下,覆盖之前的配置文件,本文中提及的HADOOP_CONF 和 HADOOP_HOME 不再指导读者配置,本文默认读者有Hadoop基础知识.
- ozone-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property><name>hdds.container.report.interval</name><value>60s</value></property>
<property><name>ozone.scm.nodes.scmservice</name><value>scm1,scm2,scm3</value></property>
<property><name>ozone.recon.https-address</name><value>10.10.2.101:9889</value></property>
<property><name>ozone.replication</name><value>1</value></property>
<property><name>ozone.scm.address.scmservice.scm2</name><value>jykj1.yarn.com</value></property>
<property><name>ozone.scm.address.scmservice.scm3</name><value>jykj2.yarn.com</value></property>
<property><name>ozone.scm.address.scmservice.scm1</name><value>jykj0.yarn.com</value></property>
<property><name>hdds.scmclient.max.retry.timeout</name><value>30s</value></property>
<property><name>ozone.scm.primordial.node.id</name><value>scm1</value></property>
<property><name>ozone.recon.http-address</name><value>192.168.149.101:9888</value></property>
<property><name>ozone.om.ratis.enable</name><value>true</value></property>
<property><name>ozone.scm.service.ids</name><value>scmservice</value></property>
<property><name>ozone.recon.db.dir</name><value>/data/metadata/recon</value></property>
<property><name>ozone.scm.datanode.ratis.volume.free-space.min</name><value>10MB</value></property>
<property><name>hdds.datanode.dir</name><value>/data/hdds</value></property>
<property><name>ozone.om.s3.grpc.server_enabled</name><value>true</value></property>
<property><name>ozone.om.service.ids</name><value>omservice</value></property>
<property><name>ozone.datanode.pipeline.limit</name><value>3</value></property>
<property><name>ozone.om.nodes.omservice</name><value>om1,om2,om3</value></property>
<property><name>ozone.scm.datanode.id.dir</name><value>/data</value></property>
<property><name>ozone.scm.ratis.enable</name><value>true</value></property>
<property><name>ozone.recon.address</name><value>10.10.2.101:9891</value></property>
<property><name>ozone.scm.container.size</name><value>1GB</value></property>
<property><name>ozone.metadata.dirs</name><value>/data/metadata</value></property>
<property><name>ozone.om.address.omservice.om1</name><value>jykj0.yarn.com</value></property>
<property><name>ozone.om.address.omservice.om2</name><value>jykj1.yarn.com</value></property>
<property><name>ozone.om.address.omservice.om3</name><value>jykj2.yarn.com</value></property>
</configuration>
- core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property><name>fs.trash.interval</name><value>1</value></property>
<property><name>fs.defaultFS</name><value>ofs://omservice</value></property>
</configuration>
启动服务
首先必须格式化集群、一定要注意启动先后顺序、先启动SCM,后启动OM、最后启动DataNode. Recon任何时候启动都可以。
-
登录jykj.[0~2].yarn.com服务器,格式化SCM,初始化OM
ozone scm --init
ozone scm --bootstrap
ozone om --init
-
登录jykj.[0~2].yarn.com服务器,启动scm和om
ozone --daemon start scm
ozone --daemon start om
-
登录jykj0.yarn.com服务器,启动Recon,稽查系统
ozone --daemon start recon
-
登录kykj.[3~4].yarn.com服务器,启动DataNode
ozone --daemon start datanode
验证启动情况
-
浏览器打开访问、查看稽查系统webui是否存在2个DataNode节点
192.168.149.101:9888
-
浏览器访问OM,SCM地址,均可访问即启动成功
192.168.149.101:9876/9874
-
命令行验证OM、SCM是否选举成功
ozone admin om getserviceroles -id=omservice
-
上传文件下载文件测试成功
hadoop fs put abc.txt /
hadoop fs -get /abc.txt .
总结
以上对Ozone高可用搭建的总结、当然在Ozone的安装包中,存在compose目录,可以通过docker-compose 一键启
动,笔者也是通过参考docker-compose配置文件总结的,希望本文可以对读者起到帮助作用.
参考
- https://ozone.apache.org/