CrazyAirhead

疯狂的傻瓜,傻瓜也疯狂——傻方能执著,疯狂才专注!

0%

说明

这次碰到的两个问题,解决后发现都不是什么大问题,解决的方法很简单,但没找到原因前确实花了不少时间进行排查,因此记录下来,方便日后查看。

问题1

Jenkins 编译,通过脚本发布 jar 程序,虽然提示编译成功,但应用未正常启动,通过ps 查看不到对应的进程。

Jenkins 的编译配置是从其他项目克隆过来的,执行正常,区别只是原来的部署脚本,原来是是 Docker 部署,新项目是直接虚机部署。编写的脚本除去一些进程的判断,大致是这样的,看似也不存在问题,另外在终端直接执行脚本是应用是可以正常启动的。

1
nohup java -jar app.jar > out.log 2>&1 &

因为通过 Jenkins 发布就是启动不了。虽然直接执行脚本是可以的,但避免有什么未知问题,还是在脚本中增加了echo 逐条写日志,日志也都有正常打印出来。后来干脆把启动程序的日志的重定向也去掉,此时在 Jenkins 的编译日志中是能看到应用已经启动了,但 Jenkins编译成功后,应用依然没有正常启动。此时能想到的就是nohup没有加&,终端退出应用就结束的情况。

初步开始怀疑 Jenkins 做了手脚,经过一方搜索,发现通过 Shell 脚本发布时,会衍生进程,Jenkins 默认会杀掉衍生进程。需要增加BUILD_ID=DONTKILLME防止衍生进程被杀。可以增加在 Jenkis中,或者增加的执行的脚本中。

1
2
3
BUILD_ID=DONTKILLME
```bash
nohup java -jar app.jar > out.log 2>&1 &

调整后一切正常。那为什么使用 Docker 部署正常呢?Docker容器启动不是 Shell 脚本的衍生进程。

# 问题2

因为项目采用了 Docker 部署,因为Docker的隔离性,容器内的应用无法操作宿主机,因此通过SSH连接宿主机,执行宿主机的命令并生成文件。这个部署在开发机一个正常的功能,在部署到另一台测试机后无法正常使用。

初步排查的时候只知道文件未正常生成,因为执行的命令依赖一个环境变量`HOME`,在终端中变量是有设置的,且其他目录也没有找到生成的文件。

因为一开始没有增加日志,于是重新增加日志打印,日志正常打印。继续增加 SSH 的返回值,返回的 exit code 是 0,返回结果是空,说明需要执行的命令是正常执行的。增加打印SSH 执行的命令,命令在终端里是可以正常生成文件的。

于是就有被带歪了,就开始想会不会因为封装的SSH的配置有问题,修改各种配置都测试了下,还是没有结果。

重新静下来思考,要不把依赖的变量,替换成实际的路径看看,于是多增加执行一个SSH 命令,`echo $HOME`,并增加了对应的日志打印。结果发现程序中无法读取环境变量`HOME`,于是确认`HOME`是配置的`/etc/profile`中的,重新source,不行,重启机器,依然不行。

后面修改成在`~/.bashrc`中配置,可以正常读取。

# 小结

两个问题都不难,但都属于自己的只是盲区。虽然能使用Jenkins进行编辑发布,虽然可以使用Jsch执行ssh命令,但只是凑巧起作用而已,稍微碰点以为情况就歇菜了,还是等多读文档。

说明

写本文是因为需要使用iOS版的Mixin Messenger需要有美区的苹果ID,当然可以购买苹果ID,但从安全和使用方便的角度来看,应该拥有自己的苹果ID。

注册的过程参考了「美区APP Store上架ChatGPT了!保姆级教程」和「注册美国区Apple ID保姆级教程」的方法,发现都不能注册成功。第一个链接的问题是支付方式已经不能选无,导致无法在完成App Store的支付检查。第二链接是通过Create Your Apple ID - Apple进行注册的,但提交时,会提示「创建用户时无法完成你的情况,此时无法创建你的账号」。

因此,主要参考链接一结合虚拟信用卡的方式,完成美区苹果ID的注册。以下该方法的具体步骤。

注意:本方法只在手机中验证通过,请使用手机操作,不要用电脑。 操作未截图,使用了链接一中的截图。

步骤

  1. 如果已经登录的苹果ID是国内账号,先退出登录。「设置」> 「头像/Apple ID」> 「退出登录」,输入密码后确定。

  2. 设置手机的区域为美国,「设置」> 「通用」> 「语言与地区」> 「地区」,选择美国。如果是英文显示时,注意是「 United States」,而不是其他。这步尤为重要,因为后续注册账号时没有地方可以填写区域,而是根据系统设置的区域来的。

  3. 创建Apple ID,「设置」> 「Apple ID」> 「忘记密码或者没有苹果ID」> 「创建 Apple ID」。

  4. 输入姓名和出生日期,注意年龄大雨十八岁否则会有限制。名和姓也要要英文名。

  5. 输入新邮箱,可以关闭公告。注意邮箱之前不能注册过Apple ID。

  6. 设置密码。

  7. 输入电话号码,短信验证。此处电话号码可以是中国区电话,已注册过的电话也没有问题。

  8. 验证电子邮箱,「设置」> 「头像/Apple ID」> 「验证电子邮箱」。

  9. 打开App Store,正常已经进入美区。

  10. 搜索「Mixin Messenger」,可以看到,确认是美区账号了。点击「获取」> 「安装」,输入密码。

  11. 此时会弹出当前账号需要进行支付检查,因为支付信用卡未准备好,暂不点击「检查」。

  12. 开通虚拟信用卡,该步骤为电脑操作。可以使用NobePay,或者FomePay。NobePay是最低账户充值500元(充值也是要收1%的手续费),开卡充值不限。开卡费1~3美元(根据卡段不同),服务费3%;FomePay开卡10美元,最低充值32美元,未实际使用其他费用未知。可以根据自己的情况进行选择,我自己使用的是NobePay,这里以NobePay进行说明。

    • 注册,https://www.nobepay.com/ ,点击「立即注册」,按提示填写。

    • 实名认证,「个人中心」 > 「我的账户」> 「我的认证」,按提示进行认证。

    • 绑定收付款人,「个人中心」 > 「我的账户」> 「添加收付款人」,按提示进行添加。

    • 充值,「资金中心」> 「快速充值」> 「在线充值」,点击「立即充值」,使用支付宝或者微信进行扫码支付。

    • 开卡,「我的卡片」> 「快速开卡」,选择「卡段」,选择「扣款账户」,输入「充值金额」,生成「随机地址」(参看步骤14),点击「开卡」,等待开卡成功提示。

    • 查看卡片信息,「我的卡片」>「卡片列表」,点击「管理」> 「查看卡片」。

  13. 生成随机地址,该步骤为电脑操作。使用https://www.meiguodizhi.com 生成美国地址,记录下对应的,街道地址,城市,州,邮编等信息,。

    最好选择以下的免税州:

    • 蒙大拿州 Montana

    • 俄勒冈州 Oregon

    • 阿拉斯加州 Alaska

    • 特拉华州 Delaware

    • 新罕布什尔州 New Hampshire

  14. 该步骤为手机操作,接步骤11,点击「检查」,选择「信用卡/借记卡」(注意此时已经没有「无」这个支付选项了),按提示填写步骤12中的信用卡信息,继续添加步骤13获取的账单寄送地址信息。

问题

以下为我在注册时碰到的问题。

  • 进入App Store时提示,连接服务器时出现问题

尝试了连接服务器时出现问题的方法,都没能解决,最终因为里面的提示地区和时间,发现自己是地区选择错误,选择了「American Samoa」导致的,应该选择「United States」,通过重新注册账户解决。

链接

说明

使用 Maven 时可以通过配置 Profile,进行不同环境变量的编辑,同时可以在资源配置文件中通过@@的方式profile定义的变量。
在查看 Solon 的开发文档时发现 Gradle 使用属性参数也能支持类似 Profile 的扩展。于是做了验证,并记录其中碰到的问题。

阅读全文 »

说明

使用 Solon 初始化工具的生成的Gradle项目,打包后生成的是的单个 Jar 文件,一开始以为是Fat Jar,但解压包之后,发现里面包含的是classes文件,而不是Jar文件。这不是像Spring Boot一样的Fat Jar,而是一种 Uber Jar 的格式。

Fat Jar

Fat Jar很好理解,一个 “肥胖的” Jar,指的是 Jar 包里面包含所有依赖包的 Jar 包。

Uber Jar

Uber Jar的原单词是Über Jar,是德语单词,但是大多数输入法上德语Ü很难打出来,所以就成了”Uber”,可以解释为 “Over” ,可以理解位为 “完整或全部” 的意思。

Uber Jar指将所有依赖项和自己的代码打包到一个Jar包里面。

和Fat Jar一样,是一个可以执行的Jar,只是包里面的是Classes文件,而不是Jar文件。如果不特别对比的情况下,可以把 Uber Jar 和 Fat Jar 等同对待。

阅读全文 »

笑来老师说,每一个类比都是一笔财富。

对「类比宝库」采用了「定投搜索」一样的命令格式:所有输入将格式化成 /命令 参数 (/command args )的格式。

目前支持的 command 有:

  • /s,查询包含相关关键字的类比。
  • /add,添加类比。
  • /thx,返回感谢列表,感谢列表是不定期更新的。

当发送的消息不包含命令时,会默认加上 /s 命令,这样可以减少输入,如发送的消息是「时间」时,等同于发送「/s 时间」。

命令的先后顺序无关,如发送以下消息,效果是一样的:「/s 时间 测试」,「时间 /s 测试」,「时间 测试 /s」。

如果发送了不支持的命令格式,不会返回任何消息,只会将消息设置为已读状态。

以下截图:

image.png
一个的Mixin群的用法,可以自己创建一个群,把「定投搜索」和「类比宝库」都添加到群成员列表里,使用@的方式发消息,此时会收到对应机器人的回复,如下图:

WechatIMG244.png
战友们可以自行尝试,如果发现工具的问题,可以添加我的微信「Crazy_Airhead」,或Mixin号「1091586」,进行反馈,谢谢。

对定投搜索来说,每接收到一条消息(输入),实际上是一条命令,因此对接收的消息做了一个格式化:所有输入将格式化成 /命令 参数 (/command args )的格式。

目前支持的 command 有:

  • /s,检索课程并返回课程清单。
  • /d,检索课程并返回课程卡片。
  • /thx,返回感谢列表,感谢列表是不定期更新的。

当发送的消息不包含命令时,会默认加上 /s 命令,这样可以减少输入,如发送的消息是「极客」时,等同于发送「/s 极客」。

命令的先后顺序无关,如发送以下消息,效果是一样的:「/s 极客 测试」,「极客 /s 测试」,「极客 测试 /s」。

如果发送了不支持的命令格式,不会返回任何消息,只会将消息设置为已读状态。

以下是一些命令截图:

image.png
WechatIMG244.png
战友们可以自行尝试,如果发现工具的问题,可以添加我的微信「Crazy_Airhead」,或Mixin号「1091586」,进行反馈,谢谢。

是什么

「定投搜索」是一个免费的Mixin机器人,是「定投人生课堂」课程搜索工具,可以通过关键字检索「定投人生课堂」的课程内容,返回课程列表。

如何使用

  1. 登录Mixin,点击搜索「7000103414」,确认是「定投搜索」后添加机器人。

  2. 把搜索关键字发给该机器人,机器人会返回检索到的课程列表(结果最多10条课程)。

    • 支持多关键字,关键字之间使用空格分隔。

    • 支持命令模式,使用/开启命令模式,当前只支持/d,表示返回课程详情,除了返回查询结果,还将一并返回查询结果的课程的卡片。如:机会成本 /d,可以在下面的图中看到返回结果。

  3. 听课。

    • 从结果中复制课程标题到「定投人生课堂」搜索该课程,开始听课。

    • 如果返回课程详情,直接点击卡片,授权后开始听课。

WechatIMG239.png
WechatIMG238.png

常见问题

搜索不到结果

  • 技术原因,课程内容是语音的,使用的是语音识别技术,可能无法完全识别,可能识别错误,可能存在错别字,导致检索不到,另外中文需要分词,分词的结果可能会和我们的预期不一致,导致检索不到。

  • 客观原因,没有导入课程数据,或者确实没有匹配的关键字。

  • 可能的解决办法,调整关键字重新搜索。

数据如何获取

手工整理。请不要找我索取课程数据,整理自己的课程笔记更重要,请听「学习的真相」的「必要关联」和「三个大脑」。

数据何时更新

课程数据是手动整理的,无法保证与课程内容的实时同步,只会不定期导入。

功能是否会更新

目前功能基本可用,暂无功能计划,后续可能会增加命令模式的命令。

如果大家有新的想法,可以反馈。

是否收费

免费。如果觉得「定投搜索」工具确实对你有帮助,欢迎打赏,打赏本文即可。

其他问题

其他问题可以添加我的微信「Crazy_Airhead」,或Mixin号「1091586」,进行反馈和沟通。

为什么

偶尔会想起一些模糊的课程内容,想重听一遍课程,但定投人生课堂只能按标题内容模糊搜索,于是只能凭记忆在Mixin中找,可能半天过去了还找不到自己想要的课程,这过程其实是挺痛苦的。在「定投人生课堂后花园」的里也会看到类似的查找课程的问题,于是有了做这个工具的想法。

之前为「且慢且慢且慢」写作群的战友提供过写作练习工具,但因为服务器和域名过期等原因,服务就中断了,非常抱歉。计划做这个工具的时候是想收费的,因为提供服务需要成本,实际做的过程中时候发现不需要公网服务器也可以提供服务,于是少了收费的欲望,本着服务战友的想法,于是决定免费开放服务。

此次提供的「定投搜索」工具,因为用了自家的NAS,理论上是可以长期服务战友们。如果「定投人生课堂」提供了更好的搜索功能,这个「定投搜索」工具也就没有存在的意义了,到时会停止服务。

在提供服务期间,如果出现无法使用的情况,请战友们及时反馈。

感谢

刚开始有做「定投搜索」这个工具的想法时,小熊老师(微信号「huashichenxiong」)给了不少积极的反馈,让我开始实际编写这个工具;中间因为工作忙没怎么做,小熊老师又不停地鼓励;现在能提供服务,也是和小熊老师讨论Mixin机器人开发,打破自己的做微信公众号的思维定势(微信的机器人和微信公众号不是同一个物种),于是趁着放假时间赶紧完成剩下的工作。总之非常感谢小熊老师,如果没有小熊老师的鼓励,这个工具不知道什么时候才能完工。

感谢Mixin好友「字友与自由」,Mixin号「39488252」,帮忙解答了机器人无法接收消息的问题。他写了个Java版的SDK(https://github.com/tooonly/mixin-java-sdk),有需要战友的可以自己获取。

零、注意事项

  • 确保安装的系统为CentOS7

  • 服务器存在多网卡问题。首先通过命令ifconfig禁用多余的网卡,以确保激活的网卡数只有1个。

1
# 查看网卡ifconfig# 禁用指定网卡ifconfig [NIC_NAME] down
  • 网卡多IP问题。在确保服务器只存在一个网卡是激活状态的情况下,通过命令查看网卡对应的IP数,若大于1,那么就需要去掉网卡中指定的IP,采用动态获取IP的方式,具体命令如下:
1
echo $(hostname -I) ip addr flush dev [NIC_NAME] ifdown [NIC_NAME] ifup [NIC_NAME]
  • hostname配置。在安装前用户需要配置hostname到ip的映射

一、基础软件安装

  • 需要的命令工具:
1
yum install -y telnet tar sed dos2unix unzip zip expect curl
  • 检查cp等命令是否有别名alias,避免安装时提示。
1
aliasvi ~/.bashrc# 删除cp rm 的别名,
  • 需要安装的软件
    • MySQL(5.5+),安装Hive时已安装

    • JDK (1.8.0_141以上),安装Hadoop时已安装

    • Python(2.x和3.x都支持),默认包含python2,无需安装,但需要安装pip和matplotlib

1
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.pypip config set global.index-url https://mirrors.aliyun.com/pypi/simple/python -m pip install matplotlib
  • 安装Nginx
1
sudo yum install -y epel-releasesudo yum -y updatesudo yum install -y nginxsystemctl start nginxsystemctl enable nginx
  • 安装Hadoop2.7.2

  • 安装Hive2.3.3(未找到2.3.3版本,使用的是2.3.9版本)

  • 安装Spark2.0以上版本

        部署Hadoop+Hive+Spark

        确保可以执行如下命令

    1
    hdfs dfs -ls /hive -e "show databases"spark-sql -e "show databases"

二、创建用户

  1. 假设部署用户是hadoop账号(可以不是hadoop用户,但是推荐使用Hadoop的超级用户进行部署,这里只是一个示例)

  2. 在所有需要部署的机器上创建部署用户,用于安装 ,如下命令创建部署用户hadoop

1
sudo useradd hadoop
  1. 因为Linkis的服务是以 sudo -u ${linux-user} 方式来切换引擎,从而执行作业,所以部署用户需要有 sudo 权限,而且是免密的,按下面步骤修改部署用户权限

编辑/etc/sudoers文件:

1
vi /etc/sudoers

在/etc/sudoers文件中添加下面内容:

1
hadoop  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL
  1. 修复文件权限
1
...chown root:root /etc/sudo.conf -Rchown root:root /etc/sudoers.d -R

三、准备安装包

  • 用户可以自行编译或者去 release 页面下载安装包:DSS Release-1.1.1

  • DSS & Linkis 一键安装部署包的层级目录结构如下:

1
├── dss_linkis # 一键部署主目录  ├── bin # 用于一键安装,以及一键启动 DSS + Linkis  ├── conf # 一键部署的参数配置目录  ├── wedatasphere-dss-x.x.x-dist.tar.gz # DSS后端安装包  ├── wedatasphere-dss-web-x.x.x-dist.zip # DSS前端和Linkis前端安装包  ├── wedatasphere-linkis-x.x.x-dist.tar.gz # Linkis后端安装包

四、修改配置

  • 用户需要对 xx/dss_linkis/conf 目录下的 config.shdb.sh 进行修改。

  • 打开 config.sh,按需修改相关配置参数,参数说明如下:

1
2
3
4
5
6
7
8
#################### 一键安装部署的基本配置 ####################### deploy user(部署用户,默认为当前登录用户)deployUser=hadoop### Linkis_VERSIONLINKIS_VERSION=1.1.1### DSS Web(本机安装一般无需修改,但需确认此端口是否占用,若被占用,修改一个可用端口即可)DSS_NGINX_IP=127.0.0.1DSS_WEB_PORT=8085### DSS VERSIONDSS_VERSION=1.1.1############## linkis的其他默认配置信息 start ############## ### Specifies the user workspace, which is used to store the user's script files and log files.### Generally local directory##file:// required. 指定用户使用的目录路径,一般用于存储用户的脚本文件和日志文件等,是用户的工作空间WORKSPACE_USER_ROOT_PATH=file:///tmp/linkis/ ### User's root hdfs path##hdfs:// required. 结果集日志等文件路径,用于存储Job的结果集文件HDFS_USER_ROOT_PATH=hdfs:///tmp/linkis ### Path to store job ResultSet:file or hdfs path##hdfs:// required. 结果集日志等文件路径,用于存储Job的结果集文件,如果未配置 使用HDFS_USER_ROOT_PATH的配置RESULT_SET_ROOT_PATH=hdfs:///tmp/linkis ### Path to store started engines and engine logs, must be local. 存放执行引擎的工作路径,需要部署用户有写权限的本地目录ENGINECONN_ROOT_PATH=/appcom/tmp### 基础组件环境信息###HADOOP CONF DIR #/appcom/config/hadoop-config(用户根据实际情况修改)
HADOOP_CONF_DIR=/appcom/config/hadoop-config###HIVE CONF DIR #/appcom/config/hive-config(用户根据实际情况修改)
HIVE_CONF_DIR=/appcom/config/hive-config###SPARK CONF DIR #/appcom/config/spark-config(用户根据实际情况修改)
SPARK_CONF_DIR=/appcom/config/spark-config###for install (用户根据实际情况修改)LINKIS_PUBLIC_MODULE=lib/linkis-commons/public-module##YARN REST URL spark engine required(根据实际情况修改IP和端口)
YARN_RESTFUL_URL=http://127.0.0.1:8088## Engine version#SPARK_VERSION(根据实际版本情况修改版本号)
SPARK_VERSION=2.4.3##HIVE_VERSION(根据实际版本情况修改版本号)
HIVE_VERSION=2.3.9##PYTHON_VERSION(根据实际版本情况修改版本号)
PYTHON_VERSION=python2## LDAP is for enterprise authorization, if you just want to have a try, ignore it.#LDAP_URL=ldap://localhost:1389/#LDAP_BASEDN=dc=webank,dc=com#LDAP_USER_NAME_FORMAT=cn=%s@xxx.com,OU=xxx,DC=xxx,DC=com############## linkis的其他默认配置信息 end ################################# The install Configuration of all Linkis's Micro-Services ######################################## 用户可以根据实际情况修改IP和端口 ##################### NOTICE:# 1. If you just wanna try, the following micro-service configuration can be set without any settings.# These services will be installed by default on this machine.# 2. In order to get the most complete enterprise-level features, we strongly recommend that you install# the following microservice parameters#### EUREKA install information### You can access it in your browser at the address below:http://${EUREKA_INSTALL_IP}:${EUREKA_PORT}### Microservices Service Registration Discovery CenterLINKIS_EUREKA_INSTALL_IP=127.0.0.1LINKIS_EUREKA_PORT=9600#LINKIS_EUREKA_PREFER_IP=true### Gateway install information#LINKIS_GATEWAY_INSTALL_IP=127.0.0.1LINKIS_GATEWAY_PORT=9001### ApplicationManager#LINKIS_MANAGER_INSTALL_IP=127.0.0.1LINKIS_MANAGER_PORT=9101### EngineManager#LINKIS_ENGINECONNMANAGER_INSTALL_IP=127.0.0.1LINKIS_ENGINECONNMANAGER_PORT=9102### EnginePluginServer#LINKIS_ENGINECONN_PLUGIN_SERVER_INSTALL_IP=127.0.0.1LINKIS_ENGINECONN_PLUGIN_SERVER_PORT=9103### LinkisEntrance#LINKIS_ENTRANCE_INSTALL_IP=127.0.0.1LINKIS_ENTRANCE_PORT=9104### publicservice#LINKIS_PUBLICSERVICE_INSTALL_IP=127.0.0.1LINKIS_PUBLICSERVICE_PORT=9105### cs#LINKIS_CS_INSTALL_IP=127.0.0.1LINKIS_CS_PORT=9108########## Linkis微服务配置完毕 ############################# The install Configuration of all DataSphereStudio's Micro-Services ######################################### 非注释的参数必须配置,注释掉的参数可按需修改 #################### # NOTICE:# 1. If you just wanna try, the following micro-service configuration can be set without any settings.# These services will be installed by default on this machine.# 2. In order to get the most complete enterprise-level features, we strongly recommend that you install# the following microservice parameters## 用于存储发布到 Schedulis 的临时ZIP包文件WDS_SCHEDULER_PATH=file:///appcom/tmp/wds/scheduler### DSS_SERVER### This service is used to provide dss-server capability.### project-server#DSS_FRAMEWORK_PROJECT_SERVER_INSTALL_IP=127.0.0.1#DSS_FRAMEWORK_PROJECT_SERVER_PORT=9002### orchestrator-server#DSS_FRAMEWORK_ORCHESTRATOR_SERVER_INSTALL_IP=127.0.0.1#DSS_FRAMEWORK_ORCHESTRATOR_SERVER_PORT=9003### apiservice-server#DSS_APISERVICE_SERVER_INSTALL_IP=127.0.0.1#DSS_APISERVICE_SERVER_PORT=9004### dss-workflow-server#DSS_WORKFLOW_SERVER_INSTALL_IP=127.0.0.1#DSS_WORKFLOW_SERVER_PORT=9005### dss-flow-execution-server#DSS_FLOW_EXECUTION_SERVER_INSTALL_IP=127.0.0.1#DSS_FLOW_EXECUTION_SERVER_PORT=9006###dss-scriptis-server#DSS_SCRIPTIS_SERVER_INSTALL_IP=127.0.0.1#DSS_SCRIPTIS_SERVER_PORT=9008########## DSS微服务配置完毕################### other default configuration 其他默认配置信息 ############## ## java application default jvm memory(Java应用的堆栈大小。如果部署机器的内存少于8G,推荐128M;## 达到16G时,推荐至少256M;如果想拥有非常良好的用户使用体验,推荐部署机器的内存至少达到32G)export SERVER_HEAP_SIZE="128M"##sendemail配置,只影响DSS工作流中发邮件功能EMAIL_HOST=smtp.163.comEMAIL_PORT=25EMAIL_USERNAME=xxx@163.comEMAIL_PASSWORD=xxxxxEMAIL_PROTOCOL=smtp### Save the file path exported by the orchestrator serviceORCHESTRATOR_FILE_PATH=/appcom/tmp/dss### Save DSS flow execution service log pathEXECUTION_LOG_PATH=/appcom/tmp/dss############## other default configuration 其他默认配置信息 ##############
  • 请注意:DSS 推荐使用 LDAP 进行用户登录鉴权,如您想接入公司的 LDAP,还需在上面的 config.sh 中填写 LDAP 的配置参数。 如何安装 LDAP?

  • 修改数据库配置。请确保配置的数据库,安装机器可以正常访问,否则将会出现 DDL 和 DML 导入失败的错误,打开 db.sh,按需修改相关配置参数,参数说明如下:

1
配置DSS数据库MYSQL_HOST=127.0.0.1MYSQL_PORT=3306MYSQL_DB=dssMYSQL_USER=xxxMYSQL_PASSWORD=xxx## Hive metastore的数据库配置,用于Linkis访问Hive的元数据信息HIVE_HOST=127.0.0.1HIVE_PORT=3306HIVE_DB=xxxHIVE_USER=xxxHIVE_PASSWORD=xxx

五、安装和使用

  1. 停止机器上所有DSS及Linkis服务
  • 若从未安装过DSS及Linkis服务,忽略此步骤
  1. 将当前目录切换到bin目录
1
cd xx/dss_linkis/bin
  1. 执行安装脚本

    1
    sh install.sh
    1. 该安装脚本会检查各项集成环境命令,如果没有请按照提示进行安装,以下命令为必须项:

    2. yum; java; mysql; unzip; expect; telnet; tar; sed; dos2unix; nginx

    3. 安装时,脚本会询问您是否需要初始化数据库并导入元数据,Linkis 和 DSS 均会询问,第一次安装必须选是(2)

    4. 通过查看控制台打印的日志信息查看是否安装成功,如果有错误信息,可以查看具体报错原因

    5. 除非用户想重新安装整个应用,否则该命令执行一次即可

  2. 启动服务

  • 若用户的Linkis安装包是通过自己编译获取且用户想启用数据源管理功能,那么就需要去修改配置以启动该项功能,使用下载的安装包无需操作
1
## 切换到Linkis配置文件目录cd xx/dss_linkis/linkis/conf## 打开配置文件linkis-env.shvi linkis-env.sh## 将如下配置改为trueexport ENABLE_METADATA_MANAGER=true
  • 若用户的Linkis安装包是通过自己编译获取,在启动服务前尽量将后续用到的密码改成和部署用户名一致,使用下载的安装包无需操作
1
## 切换到Linkis配置文件目录cd xx/dss_linkis/linkis/conf/## 打开配置文件linkis-mg-gateway.propertiesvi linkis-mg-gateway.properties## 修改密码wds.linkis.admin.password=hadoop
  • 在xx/dss_linkis/bin目录下执行启动服务脚本
1
sh start-all.sh
  • 如果启动产生了错误信息,可以查看具体报错原因。启动后,各项微服务都会进行通信检测,如果有异常则可以帮助用户定位异常日志和原因
  1. 安装默认Appconn
1
# 切换目录到dss,正常情况下dss目录就在xx/dss_linkis目录下,cd xx/dss_linkis/dss/bin# 执行启动默认Appconn脚本sh install-default-appconn.sh
  • 该命令执行一次即可,除非用户想重新安装整个应用
  1. 查看验证是否成功
  • 用户可以在Eureka界面查看 Linkis & DSS 后台各微服务的启动情况,默认情况下DSS有6个微服务,Linkis有6个微服务 (Eureka地址默认端口号9600,服务完整启动时可以看到地址)

  • 用户可以使用谷歌浏览器访问以下前端地址:http://DSS_NGINX_IP:DSS_WEB_PORT 启动日志会打印此访问地址(在xx/dss_linkis/conf/config.sh中也配置了此地址)。登陆时默认管理员的用户名和密码均为部署用户为hadoop(用户若想修改密码,可以通过修改 xx/dss_linkis/linkis/conf/linkis-mg-gateway.properties 文件中的 wds.linkis.admin.password 参数)
  1. 停止服务
1
sh stop-all.sh
  • 若用户需要停止所有服务可执行该命令sh stop-all.sh,重新启动所有服务就执行sh start-all.sh,这两条命令均在xx/dss_linkis/bin目录下执行

六、补充说明

  • 考虑到安装包过于大的问题,Linkis默认仅提供Hive, Python, Shell, Spark引擎插件,用户若想使用其他引擎,可参考文档: Linkis引擎的安装

  • DSS默认未安装调度系统,用户可以选择安装 Schedulis 或者 DolphinScheduler,具体安装方式见下面表格

  • DSS默认仅安装DateChecker, EventSender, EventReceiver AppConn,用户可参考文档安装其他AppConn,如Visualis, Exchangis, Qualitis, Prophecis, Streamis。调度系统可使用Schedulis或DolphinScheduler

组件名 组件版本要求 组件部署链接 AppConn部署链接
Schedulis Schedulis0.7.0 Schedulis部署 Schedulis AppConn安装
Visualis Visualis1.0.0 Visualis部署 Visualis AppConn安装
Exchangis Exchangis1.0.0 Exchangis部署 Exchangis AppConn安装
Qualitis Qualitis0.9.2 Qualitis部署 Qualitis AppConn安装
Prophecis Prophecis0.3.2 Prophecis部署 Prophecis AppConn安装
Streamis Streamis0.2.0 Streamis部署 Streamis AppConn安装
DolphinScheduler DolphinScheduler1.3.x DolphinScheduler部署 DolphinScheduler AppConn安装

七、问题处理

  • 部署时提示上传资源错误

可以查看xx/dss-links/links/logs/links-ps-publishservice.log看具体的错误信息,来确定具体的错误

八、参考链接

说明

需要部署大数据治理平台,查看了一些开源版本之后发现微众银行的DataSphereStudio(DSS)比较符合我们的预期,于是着手部署该数据平台。

因为DSS默认支持的是Hive2.3.3,但官网没找到对应版本,使用的是2.3.9

参考安装文档GettingStarted - Apache Hive - Apache Software Foundation

基础软件

  • CentOS7

  • Hadoop2.7.2

  • MySQL5.6+

基础配置

  • 安装MySQL,下载的是5.7.40版本
1
2
3
4
5
6
7
8
9
10
11
12
13
yum installm -y ./*.rpm

systemctl start mysqld && systemctl enable mysqld


grep 'temporary password' /var/log/mysqld.log


mysql -uroot -ppassword

alter user root@localhost identified by 'Hadoop.2023';
flush privileges;
exit
  • 配置

  • 解压

1
2
tar -zxvf apache-hive-2.3.9-bin.tar.gz
mv apache-hive-2.3.9-bin /home/hive
  • 增加PATH
1
2
3
4
5
6
vi ~/.bashrc

epxort HIVE_HOME=/home/hive
export PATH=$PATH:/home/hadoop/bin:$HIVE_HOME/bin

source ~/.bashrc
  • 创建hdfs的hive目录
1
2
3
4
hdfs dfs -mkdir -p /user/hive
hdfs dfs -chmod -R 777 /user/hive
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /tmp/hive
  • 配置hive本地临时目录
1
2
mkdir /home/tmp/hive
chmod -R 777 /home/tmp/hive
  • 配置hive-site.xml
1
2
3
cd /home/hive/conf

cp hive-default.xml.template hive-site.xml
  •  使用vim模式替换
1
2
3
4
5
# 替换临时目录
:%s#${system:java.io.tmpdir}#/home/temp/hive#g

# 替换目录用户
:%s#${system:user.name}#root#g
  • 修改hive数据库配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<property>
<name>javax.jdo.option.ConnectionDriverName</nae>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://172.18.23.219:3306/hive?createDatabaseIfNoExist=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Hadoop.2023</value>
<description>password to use against metastore database</description>
</property>
  • 下载jdbc驱动,上传到/home/hive/lib目录下。
1
2
yum install -y wget 
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar

运行

  • 初始化
1
2
3
4
5
cd /home/hive/bin
schematool -initSchema -dbType mysql


# 如果没有自动创建hive数据库,需要自己手动创建,后重新执行上述语句。
  • 启动Hive
1
./hive

说明

需要部署大数据治理平台,查看了一些开源版本之后发现微众银行的DataSphereStudio(DSS)比较符合我们的预期,于是着手部署该数据平台。

因为DSS默认支持的Spark2.0以上版本,于是本次的安装也用3.3.2-hadoop2版本。

参考安装文档Running Spark on YARN - Spark 2.4.3 Documentation (apache.org)

基础软件

1
yum install -y scala-2.12.17.rpm

基础配置

  • 设置

配置

  • 解压
1
2
tar -zxvf spark-3.3.2-bin-hadoop2.tgz
mv spark-3.3.2-bin-hadoop2 /home/spark
  • 配置spark-env.sh
1
2
3
4
5
6
7
# Options read in any cluster manager using HDFS
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
HADOOP_CONF_DIR=/home/bigdata/hadoop/etc/hadoop

# Options read in YARN client/cluster mode
# - YARN_CONF_DIR, to point Spark towards YARN configuration files when you use YARN
YARN_CONF_DIR=/home/bigdata/hadoop/etc/hadoo
  • 编辑/home/hadoop/etc/hadoop/yarn-site.xml
1
2
3
4
5
6
7
8
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

运行

  • 启动dfs
1
start-dfs.sh
  • 启动yarn
1
start-yarn.sh
  • 运行sprk-shell
1
spark-shell --master yarn --deploy-mode client
  • 验证yarn
1
http://hadoop0:8088/cluster