文档章节

如何升级YDB

开心延年
 开心延年
发布于 2017/02/20 12:48
字数 1379
阅读 52
收藏 0

一、YDB升级步骤

1.停止YDB服务

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

2.备份旧程序

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

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

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

4)备份HIVE本地元数据库

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

3.升级程序

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

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

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

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

2)替换YDB

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

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

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

3)元数据库文件替换

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

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

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

jar包如:

      kafka的reader包,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.sql是ydb的启动后的初始化SQL文件,通常来说也无须配置。

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

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

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

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

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

      如果该次升级,涉及版本一些重大特性的变化,如要在这个步骤里面给予修改。这里面的更改由延云额外提供文档进行更改。

如:

      操作系统发现的可以对性能或稳定性有较大影响的新的参数设置

      hadoop\kafka\zookeeper等对ydb有较大影响的一些新的参数配置。

 

对于本地1.5版本的ydb需要添加额外如下配置

1)网络配置优化

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

sysctl -p

sysctl -a|grep somaxconn

2)Hadoop 配置更改

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

l调整ipc.server.listen.queue.size为32768

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

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

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

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

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

2)spark的ui页面是否能打开

3)核对业务,服务是否正常,相关SQL是否能查询到结果

4)核对业务数据是否有异常,数据条数是否正确。

 

 

© 著作权归作者所有

开心延年

开心延年

粉丝 16
博文 17
码字总数 67948
作品 1
东城
程序员
私信 提问
记一次kafka数据丢失问题的排查

数据丢失为大事,针对数据丢失的问题我们排查结果如下。 第一:是否存在数据丢失的问题? 存在,且已重现。 第二:是在什么地方丢失的数据,是否是YDB的问题? 数据丢失是在导入阶段,数据并...

徐学良
2018/02/03
972
0
php 调试工具--ydb

ydb 是像gdb一样的php调试工具,用扩展实现,可以在运行过程中查看变量值,也可以进行性能测试,而不用对源代码进行任何更改,就像xdebug和xhprof 中提供的功能,但使用更方便 ydb也可以称为...

micweaver
2014/01/06
1K
0
前后端接口规范

前后端接口目前这样定: 1.workbench对后端请求: [TCP报文] 2.响应数据集 [TCP报文] 它是一个json字典,至少有两个键ok和result。 当ok=1,result是一个二维数组,里面元素只能是字符串或数...

alex0000
2015/07/01
15
0
MongoDB基本管理命令

MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一...

beibugulf
2016/11/28
8
0
MongoDB日常运维操作命令小结

总所周知,MongoDB是一个NoSQL非数据库系统,即一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,...

拎壶冲冲冲
2018/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
133
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部