1、Gbase入库的准备工作:
1)、输入表和输出表的字段必须对齐(对齐指字段的数量相等、字段的名称一致)
2)、gbase表里和spark表里都必须有分区字段(入库的脚本是按天或按月入库的),否则会报错或者任务显示成功,实质上并没有成功入库。
2、Gbase入库大体流程:
1) 第一步:算法(vmax_preProcessForGBbase_0.0.1.jar)从spark表中清洗到hdfs路径:/metadata/hdfs/load2gbase;
gbasefile{
classname=com.zte.vmax.metadata.preprocessforgbase.PreProcessForGBaseAction
classmethod=action
jarpath=%algorithmpath%/commonjar/vmax_preProcessForGBbase_0.0.1.jar
confpath=%algorithmpath%/config/gbaseLoaderPath.conf
}
2) 第二步: 从hdfs路径/metadata/hdfs/load2gbase下载到vmax节点/home/netnumen/ems/ums-server/utils/vmax-metadata-manager/GBaseLoaderFile;
3) 第三步: 把这个目录下面的文件上传到dispather节点(目前的配置基本上dispath节点与vmax在同一节点)的/home/vmax/gbasedb/GBaseLoaderFile 目录下;
4) 第四步: 调用gbase入库脚本/home/vmax/gbasedb/load_data.sh把数据入到Gbase.
过程:
1)对目录/metadata/hdfs/load2gbase,基本上1分钟(dataarrivalcheck.conf GBaseFilePath.scanInterval=1)扫描一次,
一共扫描60次(dataarrivalcheck.conf GBaseFilePath.scanCount = 60;
2)当上面的60次扫描完成之后(60分钟后),再对异常路径(/metadata/hdfs/load2gbaseException),再扫描一次;
3)异常路径扫描完成之后,再去上面正常路径(/metadata/hdfs/load2gbase)扫描60次,如此反复扫描。
------------------------------
工作路径及文件说明:
------------------------------
1)hdfs路径:
/metadata/hdfs/load2gbase 正常入库的hdfs路径:基本上1分钟(dataarrivalcheck.conf GBaseFilePath.scanInterval=1 )扫描一次,一共扫描60次(dataarrivalcheck.conf GBaseFilePath.scanCount = 60 );
/metadata/hdfs/load2gbaseException 有入库异常的hdfs路径:当上面的60次扫描完成之后,再扫描这个路径一次,再去上面路径扫描60次。
2)vmax节点:
/home/netnumen/ems/ums-server/utils/vmax-metadata-manager/GBaseLoaderFile 将hdfs上的数据文件下载下来的文件存放地
3)dispather节点:(目前的配置基本上dispath节点与vmax在同一节点)
/home/vmax/gbasedb/GBaseLoaderFile/data 将Vmax节点上的数据文件上传到 dispatch节点的数据存放地位置
4)gbase入库脚本:
/home/vmax/gbasedb/load_data.sh 通过该脚本将/home/vmax/gbasedb/GBaseLoaderFile/data导入到Gbase数据库。
会产生如下的命令:
sh /home/vmax/gbasedb/load_data.sh /home/hym/dm_plan_point_stat_d.csv zxvmax dm_plan_point_stat_d 133.37.23.235 6666 /home/hym/data.log /home/hym/data.txt 133.37.23.62
sh load_data.sh /home/hym/dm_base_sector_c_d11.csv zxvmax dm_base_sector_c_d 133.37.31.151 6666 data.log data.txt 133.37.31.150
------------------------------
日志文件说明:
------------------------------
1)一般启用线程扫描机制来完成数据入库GBase:
/home/netnumen/ems/ums-server/utils/vmax-metadata-manager/log/GBase/GbaseLoader.debug.log
2)数据加载服务将数据加载至gbase的过程,该过程会生成gbase同步日志文件,日志文件存放在(load_data.sh文件产生的日志文件):
/home/vmax/gbasedb/GBaseLoaderFile/表名/ 目录下。
比如会产生如下的内容:
Start mission [union_singleuserevaluate_voice_ratio] in dispatch mode...
[2016-11-15 12:42:55] SYSTEM: Launch loader on: 133.37.23.62 CMD: load gcluster data infile ‘rmt://133.37.23.235:6666/vfile?dispatch_id=2199&vfile_id=‘ into table `zxvmax`.`union_singleuserevaluate_voice_ratio` options ‘-m2 --user=gbase --password=xxxxxxxxxxxxx --socket=/tmp/gbase_8a_5050.sock --format=3 --parallel=4 --max_error_records=5000 --def_timestamp_format=\‘%Y-%m-%d %H:%i:%s.%f\‘ --def_datetime_format=\‘%Y-%m-%d %H:%i:%s.%f\‘ --delimiter=\‘\\x2C\‘ --null_value=\‘\\x6E\\x75\\x6C\\x6C\‘ --auto_fill_column=1 --current-timestamp=1479184975 ‘ fields terminated by ‘,‘
3)查看历史异常数据:
hdfs dfs -ls /metadata/hdfs/load2gbaseException
如果一直遗留历史异常数据也会影响gbase入库,需要删除hdfs的/metadata/hdfs/load2gbaseException/下的历史异常数据。
原文地址:https://www.cnblogs.com/hymmiaomiao/p/8695123.html