本文将介绍 OceanBase 在红象云腾大数据场景下的落地实际与思考,心愿帮忙正在摸索 OceanBase 的企业用户疾速实现 OceanBase 选型与落地。
作者:童小军
红象云腾 (REDOOP) 公司董事长兼 CTO,中国首位 Cloudera CCDH 认证工程师,曾任 China Hadoop Summit 联结主席。
红象云腾是一家专一于 Apache Hadoop 生态的大数据软件厂商,次要产品是红象云腾大数据根底平台(Redoop Enterprise V9.0),产品由 CRF 数据接入,CRH 数据存储,CRS 数据分析三大部分形成。红象的外围产品是围绕以 Hadoop 为外围,打造一系列的解决方案,服务中国客户。Hadoop 是 Apache 基金会上面没有提供商业反对和服务的软件,红象基于此提供面向用户的商业解决方案。Hadoop 分布式是红象的终点,也是咱们的事业,始终以来咱们都在做大数据 Hadoop 推广和遍及工作。在这方面,Hadoop 和 OceanBase 有很多能够相互补充的中央,咱们也发现在大数据 Hadoop 生态里,短少一个能反对分布式事务,反对跨两地多核心的解决方案。
咱们参加到 OceanBase 社区外面,是抱着积极参与,敢于尝试的态度,因为咱们是最早吃 Hadoop 螃蟹的一批人。Hadoop 刚诞生的时候,架构非常简单,应用起来不不便。然而在 Hadoop 处于零点几的版本时,因业务及数据规模的须要,咱们就开始去尝试应用。这次 OceanBase 开源之后,我感觉是惊艳四座,如果用四个字总结,就是“简洁又美”。我集体感觉技术人员是有立场的。什么叫立场?咱们的工夫是贵重的,咱们得把贵重的工夫用在真正优良的作品下面。
“OceanBase 作为一个分布式数据库,在架构上却展现出了简洁美,这让咱们看到了新的机会。”—— 红象云腾 CTO 童小军
咱们为什么抉择 OceanBase?
有以下 五个起因:
第一 身份转变。OceanBase 是在往年 6 月 1 日开始走开源凋谢的路线,这让咱们有了参与感。如果不开源,首先,咱们是没有机会拿到这个版本的;其次,咱们不晓得怎么参加奉献;另外,咱们奉献的价值也不能失去社区的认可。所以说开源凋谢让咱们从一个旁观者,或者说是使用者,变成一个参与者,这是很重要的身份转变。另一方面咱们可能的确拿不出特地短缺的估算去反对商业版,然而咱们也心愿能用上 OceanBase 的技术,开源路线进去之后咱们就大胆的去用了。
第二 技术选型。咱们对于数据库是有要求的,首先,Hadoop 是原生分布式,高可用的零碎,天生的设计就是多正本,然而在跨数据中心这一块比拟弱。所以,咱们在抉择数据库时,岂但要求具备分布式、高可用特点,而且还要线性可扩大,这是咱们对于选型数据库的要求,OceanBase 合乎咱们的需要。
第三 兼容性,这是一个很要害的个性。OceanBase 对 MySQL 的兼容性很好,咱们很多应用程序能够间接移植到 OceanBase 环境而不须要改太多代码。咱们有一个应用程序迁徙到 OceanBase 环境之后一行代码都没有批改,间接迁徙应用,所以高兼容性是咱们抉择 OceanBase 的一个关键点。
第四 技术支持。尽管在阿里、蚂蚁外部 OceanBase 计划曾经十分成熟,然而对于咱们来说 OceanBase 是一个新产品,因而在选型和测试时会放心遇到业务不能失常拜访或者出现异常等咱们无奈搞定的技术问题,对咱们的客户不好交代。在咱们应用 OceanBase 过程中,OceanBase 社区团队对咱们的反对力度很大,遇到问题时,咱们技术同学把状况反馈到用户群里,社区技术团队可能及时的响应和解答,使咱们能放心使用。
抉择 OceanBase 还有一个最要害的点:部署不便、简洁易用。
一开始看到 OceanBase 的时候,发现它只有一个次要组件 OBServer,当然周边组件也是有的,然而外围只有一个组件。而 Hadoop 组件切实太多了,作为一个入门用户,要把握一套 Hadoop 零碎须要花很长时间搞明确一堆组件的性能。而 OceanBase 实现了 Hadoop 外面的很多个性,也实现了很多 Hadoop 外面没有的个性,所以说简洁就是美。
二、利用在红象云腾的哪些场景?
红象次要是做分布式大数据业务场景,这个场景有两条路线,别离是批处理路线和流解决路线。Hadoop 更善于后端解决,做大规模数据量的解决(比方 ETL 荡涤),并不是很善于面向用户端。当咱们面向用户端的时候,比如说报表,当应用程序连上来的时候,Hadoop 就显得力不从心,Hadoop 更多的是面向一个大规模数据做批处理业务。
针对面向实时的场景,尽管也有解决方案(比方 HBase 等),然而这些解决方案还是并重,因而咱们须要一款轻量级的解决方案。以前咱们用的是 MySQL,当初用 OceanBase 来代替 MySQL 集群承当业务报表。当数据运算实现后把后果存到一个后果数据库外面,OceanBase 承当面向利用端来提供服务的角色。所以在一些大数据场景下,比方数据海量存储的在线服务、ETL 荡涤后果的存储、轻量级 OLAP 剖析报表以及元数据库服务等都能够思考应用 OceanBase 计划来提供服务。分布式数据库在大数据业务次要应用场景如下:
以后 Hadoop 生态依赖的一些 hive 元数据是存储在 MySQL 外面,在业务量大的时候,hive metadata 也没有特地好的存储计划。比方客户说咱们 hive metadata 的 MySQL 也得高可用,这是客户在咱们业务线现场提的需要,怎么办?咱们做一个 MySQL 集群吗?又掉进去了是吧?如果做主备的话,又不具备高可用能力。所以说在咱们整个 Hadoop 技术栈外面有很多场景,比方第一个代替 MySQL 的场景,第二个是承当多种前端业务查问申请的场景。
「新能源电力大数据上线 OceanBase」
用 OceanBase 的短处补 Hadoop 的短板是红象要致力尝试去做的,把这两个生态联合起来以更好的服务客户。能够看一下红象的 Hadoop 和 OceanBase 组合的电力行业的新能源案例:这是一个大数据平台,蕴含了 Hadoop、Hive、Druid、Spark、Flink 等组件。
大家可能从市场上看到的发行版本都很大,咱们红象的指标是把咱们的发行版做小。我集体已经思考过:小到极致,砍到极致,能留下什么?咱们外围围绕着 Hadoop,把其余的做成插件,外围的找合作伙伴来做。这是我想给创业者的一个倡议:当你把一堆开源组件集合起来,还不如你做好一个组件,反倒更能凸显价值,这也是咱们的一个路线。把 Hadoop 做好,剩下的咱们与合作伙伴一起实现商业解决方案。
在能源大数据的场景外面有一条业务流。光伏传感器的数据会源源不断的录到 kafka 里,Flink 程序去生产 kafka 的数据,生产完数据又会从新录到 kafka 里,而后 Apache Druid 去生产 kafka 数据,再对外提供服务,这是一条工业时序数据的解决场景。
这个过程在什么中央用到 OceanBase?咱们的点表数据传过来的时候是 CSV 一样的逗号宰割的流,这个流的每一个字段会变动,咱们就须要一个数据库来存储这些变动。咱们须要在 Flink 外面拿到 matadate 字段形容信息,而后把表构造的信息补充下来。因而从原始 kafka 数据到咱们的 DRUID 要生产的这个数据两头是要有一个数据补齐的工作。对于指标的形容信息就存在 OceanBase 外面。
咱们还有一些应用了各种数据库的业务。以前,咱们会把这些数据录到 Hadoop 外面建个 hive 表,再供业务应用,整个流程非常复杂,用户应用起来也很累。当初,间接把数据间接录到 OceanBase 外面,再对外提供服务。架构非常简单,能够很不便解决客户问题。
以前红象做事件喜爱做加法,把一个零碎搞得好简单,当初做事件都做减法。咱们在新疆有个通信管理局我的项目,我的项目数据有 600 个 Hadoop 节点。首先把电信和联通的数据加载到 kafak 外面,再通过 Spark 进行计算,计算完之后录到 hive 外面,解决流程太长了。通过简化,咱们间接把数据推到 Hadoop 外面就搞定了。有的时候做减法感觉更好,咱们当初做事件做架构都是做减法。
这一套 Hadoop 集群的部署架构下面有 4 个治理节点,上面是数据节点,其中 OceanBase 由 6 个节点形成,每个节点是 36 核 128G,有 1 个 2T 的数据盘,一个日志盘,这个是通过 OceanBase 的团队 check 当前目前在运行的计划。
咱们的集群部署构造有 3 个 zone,每个 zone 有两台机器,总共 6 台机器的基础架构,撑持的业务由 OceanBase 加 PGSQL,还有 HDMS 这些组件独特来撑持各种业务,业务场景有数据接口、零碎利用、报表可视化等等这些利用场景。
「Hadoop + OceanBase 点亮新能源大数据」
这个是咱们当初集群状况,目前只是个小集群:3 个 kafka,8 个 Hadoop 治理节点加数据节点,6 个 OceanBase 节点,撑持 10 万个点位数据。每天有 10 万个点位须要收集,新增数据 0.5 个 TB 左右,尽管数据量还不是很大,然而咱们前面有 600 个 Hadoop 节点的集群,随着数据量会越来越大,OceanBase 在该业务表演的角色会越来越重要,外围性能会体现的酣畅淋漓,比方弹性扩缩容,HTAP 能力等。
这个我的项目的投资额很大,是咱们国家能源部布局的光伏储能的时政平台,是一个很有意义的我的项目,它是代表着咱们在光伏产业的新技术新产品。
三、从用户角度还能改良什么?
从红象云腾的实际中,基于用户角度,想对 OceanBase 提出五点倡议供参考。
- JBOD(just a bunch of disks)多盘符挂载反对。
Hadoop 的机器都是 JBOD 很多盘,一台机器可能有 12 个盘,每个盘 4 个 T 的架构。然而 OceanBase 指向的是一个盘,这个时候剩下的 11 块盘怎么办?要是做成 raid 模式又跟咱们混合部署架构不大一样。如果能够做到 JBOD 多盘符挂载反对,那么 Hadoop 的业务往 OceanBase 迁徙更不便,同时机器资源复用更加敌对。目前 OceanBase 团队反馈外部正在评估该需要。
- 初始文件磁盘占用率问题。
在部署完 OceanBase 之后,咱们发现磁盘占用率达到 90%。这是因为 OceanBase 在部署完会创立一个大文件,先把这个空间占着不便读写,我也能了解这个事,当然运维了解不了。所以咱们把 OceanBase 部署起来之后,咱们运维工程师说“童老师,零碎数据还没写进去,这个盘怎么满了。”起初咱们通过从 OceanBase 外部提取一些指标数据通知运维同学理论的磁盘应用状况,同时咱们也心愿初始文件能够增量设置。目前 OceanBase 团队反馈外部正在评估该需要。
- 单个组件的启动、配置管理以及监控问题。
之前咱们应用 OceanBase 开源第一个版本,须要用命令行形式装置部署环境,通过配置文件的形式去配置,对于单个组件的启动和敞开不是特地不便,须要对整个集群操作。在一些场景下咱们须要对某一台机器的某个组件进行启动和敞开,这样能够精准的对某台机器启停,而不是去改配置文件,或者更简单的操作,能不能针对单个机器,单个组件做配置管理,其实对于管理工具是个挑战。目前在最新的 OceanBase 社区版 3.1.2 版本中,OceanBase 云平台(OceanBase Cloud Platform,OCP)反对开源。OCP 是一款以 OceanBase 为外围的企业级数据库治理平台,能够轻松的解决以上提到的问题,同时 OCP 不仅提供对 OceanBase 集群和租户等组件的全生命周期治理服务,同时也对 OceanBase 相干的资源(主机、网络和软件包等)提供治理服务,可能更加高效地治理 OceanBase 集群,升高企业的 IT 运维老本,对使用者来说十分敌对。
- ODBC 驱动的反对。
咱们的业务现场还有一个叫 odbc,已知 OceanBase 是反对 jdbc,不反对 odbc,然而 MySQL 能够适配 odbc,所以在理论业务场景中须要把数据写回到 MySQL。odbc 在工业场景有很多 windows 机器或者一些起因应用 odbc 驱动,咱们心愿 OceanBase 不仅要反对 jdbc,odbc 也须要思考反对。目前 OceanBase 团队反馈该需要曾经在排期布局中。
- Latin1 字符集的反对。
咱们想把 hive 的 metadata 迁徙下来,发现该字符集不反对,目前是通过改利用来适配,如果 OceanBase 前面能反对就更好了。目前 OceanBase 团队反馈外部正在评估该需要。
四、单方生态整合,优势互补
- Hive Metadata On OceanBase。
以后咱们的 Hadoop metadata 解决方案还是基于 MySQL,因而存在单点、容量受限的问题。咱们打算应用 OceanBase 替换 MySQL 计划并利用在通信治理的管理局我的项目上,目前该计划还是测试阶段。
- OceanBase BackUp To NFS On HDFS。
这个问题是对于 Oceanbase 的 Backup。OceanBase 自身有备份和复原的性能,大家也都能够应用,同时数据默认是三正本(即数据会存储三份),通过 Paxos 协定保证数据的强一致性,人造保障业务的高可用。不过咱们想的是 OceanBase 在帮咱们解决问题的同时能不能也用上 Hadoop?这样两个产品的劣势会整合起来,造成一个十分好的解决方案。
在上面这个场景里大家能够感触下:咱们公司最大的客户是中国航天,在 Hadoop 上存储、治理的数据达到几十个 PB,治理了几十颗卫星的数据,因而咱们的责任很大,不能漫不经心的。这套零碎上线之后,这十几年来咱们没有呈现过一次因为机器故障导致大规模数据失落的问题,有时候哪怕是丢了几个小块,咱们都能够从文件系统把这个块数据找回,所以 Hadoop 给了咱们一个很好的备份机制,大家能够释怀的把数据存在下面,而不必放心数据失落。因而,能够尝试把 Hadoop 当作 OceanBase 的备份组件应用,这是我的小倡议。
写在最初
从开源中来,到开源中去,这是我给大家的一个倡议。有很多同学都是用开源产品的,可能也是开源软件的创立者,咱们是开源软件的受益者,所以咱们也要为开源做出咱们的奉献。
分享一下我对开源的了解:
第一,开源是一个建设规范的过程,一流的公司是做规范的。第二,开源是一个建设连贯的过程。你的软件被大量的应用,你和各个公司建设起了连贯,天然有商业机会。红象云腾使咱们参加到 Hadoop 的开源社区外面,去遍及和推广 Hadoop,这是咱们成长起来的要害起因。咱们心愿可能跟着 OceanBase 开源社区独特成长,为 OceanBase 开源奉献咱们的力量。