GitLab + Jenkins + Nginx + Lua 实现代码自动分发
在大数据Hive数据仓库的开发中,主要是shell + HQL的脚本开发。脚本的测试需要放到适当的大数据环境中进行。如果大家共用GitLab项目上的同一个Branch进行测试需要代码频繁合并,影响效率。我的思路是每个Developer在自己的Branch开发并经过测试后发起Merge Request。
在我的开发场景中GitLab在内网中通过端口映射后允许从外网访问,GitLab中的IP都是内网的,GitLab上的项目链接地址都是内网的,如(ssh://git@192.168.1.10:50022/test/test.git)。并且我的Jenkins也是在内网中的,所以需要通过一层代理接收外部的REST API请求。这一点给最终的实现带来一些难点。
系统架构
Jenkins安装插件网络错误问题解决
Jenkins安装插件时报网络不通的错误,根据错误信息看是连接https://www.google.com网络不通。解决这个问题的方法是修改“Update Site”的URL地址,将默认地址由https改为http。
“Update Site”配置项位置在“插件管理->Advanced”中,修改后如下图:

Python3创建虚拟环境
Python虚拟环境主要是为了解决Python多版本及模块间版本兼容的问题。创建虚拟环境的方法很简单,使用下面的命令即可:
1 | python3 -m venv PySparkEnv |
PySparkEnv即虚拟环境的主目录。如果要启用这个虚拟环境的话,使用以下命令:
Sqoop源码修改:增加落地HDFS文件数与MapTask数量一致性检查
本篇是对记录一次Sqoop从MySQL导入数据到Hive问题的排查经过的补充。
Sqoop命令通过bin下面的脚本调用,调用如下:
1 | exec ${HADOOP_COMMON_HOME}/bin/hadoop org.apache.sqoop.Sqoop "$@" |
Linux命令行导出Emacs ORG文档为HTML
Emacs版本25.2。使用以下命令将org文档导出html:
1 | emacs {orgFile} --batch --eval "(require 'ox)" --eval "(org-html-export-to-html)" |
批量导出目录下的org文档:
Sqoop支持ORC文件格式
Python3操作MongoDB批量upsert
代码如下:
1 | mongoClient = MongoClient('mongodb://172.16.72.213:27017/') |