如何升级YDB

如何升级YDB

一、YDB升级步骤

1.停止YDB服务

      通过./stop-all.sh来停止服务(注:HDP版本需要在管理页面上停止服务)

2.备份旧程序

1)备份旧版YDB整个程序目录

2)备份我们自己开发或添加的第三方的jar包和配置文件

3)备份YDB提供的Spark整个程序目录

4)备份HIVE本地元数据库

      本地元数据库是指Hive元数据库derby.logmetastore_db,元数据库的位置可以从conf下的ya100_env.sh中的HIVE_METASTORE_PATH获取,如下图所示。

 

3.升级程序

1)替换ydb提供的Spark升级版本

将之前旧的spark整个目录mv成待备份的目录名字,如xxx_spark_bak_yyyymmdd

将新的spark解压后,重新命名为之前的spark目录

检查spark目录是否正确,核对spark相关文件是否存在

2)替换YDB

将之前旧的ya100 整个目录mv成待备份的目录名字,如xxx_ya100_bak_yyyymmdd

将新的ya100解压后,重新命名为之前的ya100目录

检查ya100目录是否正确,核对相关文件路径是否存在

3)元数据库文件替换

      将之前备份的Hive元数据库derby.logmetastore_db ,恢复到相关目录里面。

      如果没有恢复该元数据库目录,升级YDB后,会发现之前旧版创建的hive表,均不可见(数据还在)。

5)将我们我们自己开发或添加的第三方的jar包和配置文件重新覆盖过来。

jar包如:

      kafkareader包,parser

      自定义udf,udaf,udtf函数

      自定义的第三方分词,自定义的词库

      因为版本问题而更换的kafka相关jar

      其他jar包,如mysql相关库

配置文件如

      fieldType.txt里面自定义的数据类型

      dynamicField.txt里面自定义的动态数据类型

       IK_ext.dic 里面定义的IK词库文件

4.更改配置

1)ya100_env.sh更改(HDP版请在配置页面上管理)

参考旧的ya100_env.sh,将旧版的ya100_env.sh 我们用户配置的部分,更新到新版。

如下图所示,红色部分是我们经常需要修改覆盖的地方。

 

2)ydb_site.yaml更改(HDP版请在配置页面上管理)

参考旧的ydb_site.yaml,将旧版的ydb_site.yaml 我们用户配置的部分,更新到新版。

如下图所示,红色部分是我们经常需要修改覆盖的地方。

 

3)log4j的配置更新(HDP版请在配置页面上管理)

      log4j是用来控制程序的日志的。

      常规情况下log4j我们无需配置,但是如果之前我们的旧版本改动了log4j的配置,我们本次升级记得也跟着改动过来

      driver.log.properties 为我们的driver节点的log4j 配置,即master节点的log4j

      worker.log.properties 为我们的worker节点的log4j配置。

4)spark-defaults.conf的配置更新(HDP版请在配置页面上管理)

      改配置为spark的配置,常规情况下用户无需配置。最近的一些版本spark-defaults.conf我们的改动也比较大,所以注意,spark-defaults.conf绝对不可以直接用旧版的配置文件直接覆盖,因为很多我们配置项的改动是为了提升稳定性。

      但如果因为某种原因,我们之前更改过该文件的配置,请大家一定要在新的配置的基础上,仅仅增加或修改我们自己更改过的那些配置,为了稳定性,不要随意删掉YDB提供的默认配置。

 

5)init.sql里面我们的初始化函数

      init.sqlydb的启动后的初始化SQL文件,通常来说也无须配置。

      如果我们在init.sql做了一些Hive函数的初始化,或者构建了一些表之类的,我们需要参考旧的init.sql对应着修改过来

6)hive-site.xml的配置(HDP版请在配置页面上管理)

      hive-site.xml是跟hive表相关的配置,里面控制了jdbc连接的线程池,以及元数据存储位置等信息。

如果之前旧版我们更改过这里,记得要配置。

5.本次版本更新的新增特定配置

    对于当前最新版1.7版本的ydb升级需要添加额外如下配置

1)网络配置优化

echo " net.core.somaxconn = 32768 " >> /etc/sysctl.conf

sysctl -p

sysctl -a|grep somaxconn

2)Hadoop 配置更改

调整dfs.datanode.max.transfer.threads的值,默认4096太小,建议调整为10240

调整ipc.server.listen.queue.size32768

调整yarn.resourcemanager.am.max-attempts的值为10000000,默认的2次太小,客户测试过程反复的kill就会导致整个任务失败。

3)如果分配给ydb的内存小于6Gydb_site.yaml里需要 加上下面的

ydb.realtime.doclist.buffbyte: 2048000

如下图所示,记住前面有一个空格,这里面不能出现\t与中文空格 冒号后面也有一个空格

 

6.启动YDB并检查服务是否正常

通过start-all.sh来启动服务

1)ydb1210页面上的monitor页面是否有异常错误上报

 

看这个页面是否有 紫色或者红色的异常提示