WhereHows 安装

1. 准备

1.1. 依赖工具

建议使用以下工具对应的版本号,由于版本导致的问题,解决起来怪麻烦的

  • Gradle >= 2.4, 下载链接在 这里 2.14(当前最新发布版)也没问题

  • Play = 2.2.4, 下载链接在 这里 Play的版本兼容做得不好,每次版本升级都会搭配一个升级指南,所以保证版本的问题

  • Java=1.8

  • Mysql >= 5.6,事实上,5.7会有问题

  • ElasticSearch,最新发布版就好,下载链接在 这里

metadata-etl/extralibs目录需要的Jar包,从Maven仓库下载即可
Maven仓库地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.12

#1. mysql-connector-java.5.1.*.jar如 mysql-connector-java.5.1.12.jar#2. jython-standalone-2.7.0.jar

1.2 安装工具

安装GradlePlay以及ElasticSearch

教程:

  • Gradle, 官方教程

  • Play, 官方教程

     

Play-2.2.4在安装完成后,为了避免`StackOverflowError`, 需要改一下 `$PLAY_HOME/framework/build` 里的配置信息:将"$JAVA" ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:ReservedCodeCacheSize=192m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M ${JAVA_OPTS} -Dfile.encoding=UTF-8 -Dplay.version="${PLAY_VERSION}" -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -Dsbt.scala.version=${SBT_SCALA_VERSION} ${PLAY_OPTS} -jar `dirname $0`/sbt/sbt-launch.jar "$@"改为
"$JAVA" ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss2M -XX:ReservedCodeCacheSize=192m -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512M ${JAVA_OPTS} -Dfile.encoding=UTF-8 -Dplay.version="${PLAY_VERSION}" -Dplay.home=`dirname $0` -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties -Dsbt.scala.version=${SBT_SCALA_VERSION} ${PLAY_OPTS} -jar `dirname $0`/sbt/sbt-launch.jar "$@"
  • ElasticSearch, [官方教程](

https://www.elastic.co/guide/en/elasticsearch/guide/current/running-elasticsearch.html)

2. 下载WhereHows源码

WhereHows-Github主页

master分支的代码吧

3. 构建前准备

即使不做这些构建前准备工作,项目也能构建成功,但是运行的时候,就会报错了

3.1 初始化数据库

 
#1. 创建wherehows数据库CREATE DATABASE wherehowsDEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;#2. 创建wherehows用户CREATE USER 'wherehows'@'localhost' IDENTIFIED BY 'wherehows';CREATE USER 'wherehows'@'%' IDENTIFIED BY 'wherehows';GRANT ALL ON wherehows.* TO 'wherehows'@'wherehows';GRANT ALL ON wherehows.* TO 'wherehows'@'%';CREATE USER 'wherehows_ro'@'localhost' IDENTIFIED BY 'readmetadata';CREATE USER 'wherehows_ro'@'%' IDENTIFIED BY 'readmetadata';GRANT SELECT ON wherehows.* TO 'wherehows_ro'@'localhost';GRANT SELECT ON wherehows.* TO 'wherehows_ro'@'%';#3. 执行建表语句cd WhereHows/data-model/DDLmysql -h localhost -u wherehows -p wherehows < create_all_tables_wrapper.sql

3.2 启动ElasticSearch索引

 

#1. 创建数据集、注释、字段映射curl -XPUT '$YOUR_INDEX_URL:9200/wherehows' -d '{"mappings": {"dataset": {},"comment": {"_parent": {"type": "dataset"}},"field": {"_parent": {"type": "dataset"}}}}'#2. 创建flow_job内嵌对象映射curl -XPUT '$YOUR_INDEX_URL:9200/wherehows/flow_jobs/_mapping' -d '{"flow_jobs": {"properties": {"jobs": {"type": "nested","properties": {"job_name": { "type": "string" },"job_path": { "type": "string" },"job_type": { "type": "string" },"pre_jobs": { "type": "string" },"post_jobs": { "type": "string" },"is_current": { "type": "string" },"is_first": { "type": "string" },"is_last": { "type": "string" },"job_type_id": { "type": "short" },"app_id": { "type": "short" },"flow_id": { "type": "long" },"job_id": { "type": "long" }}}}}}'#3. 构建ElasticSearch索引这个构建工作作为一个`ETL Job`,在从Mysql获取数据时会自动触发,当然也可以手动执行`metadata-etl/src/main/resources/jython/ElasticSearchIndex.py`来构建

3.3 调整Akka-actor版本

WhereHows是一个 Gradle多工程项目,公共依赖都是在父工程声明的,所以修改WhereHows/build.gradle文件

 

将"akka" : "com.typesafe.akka:akka-actor_2.10:2.3.15",调整为"akka" : "com.typesafe.akka:akka-actor_2.10:2.2.5",

具体描述参见 这里

3.4 创建一个临时目录供ETL-Job使用

WhereHows中的metadata-ETL的工作流程是这样的:

  • backend-service项目定时读取DB中wherehows.wh_etl_job表的记录,找出本次需要执行的ETL-Job

  • Java调Jython脚本执行Extract,生成一些文件到磁盘,CSV文件

  • Java调Jython脚本执行Transform,生成一些文件到磁盘,CSV和JSON文件

  • Java调Jython脚本执行Load,分析上面生成的文件,并录入Mysql

 

cd $HOME/Documents#1. 用来存放生成的csv或json文件mkdir -p wherehows_tmp/execmkdir -p wherehows_tmp/app_folder#3. 存放一些UI相关的文件midir -p wherehows_tmp/resources

4. 构建并运行

主要是启动backend-serviceweb两个工程

UI和后台服务之间是互相独立的,可以分别启动

4.1 启动backend-service

它是一个Play应用,启动方式如下:

 
#1. 修改conf/database.conf配置信息db.wherehows.driver = "com.mysql.jdbc.Driver"db.wherehows.url = "jdbc:mysql://localhost/wherehows?charset=utf8&zeroDateTimeBehavior=convertToNull"db.wherehows.user = "wherehows"db.wherehows.password = "wherehows"db.wherehows.host = "localhost"#2. dev模式-启动cd backend-service$PLAY_HOME/play "run PORT_NUM"#3. prod模式-启动cd backend-servicegradle dist##启动./target/universal/stage/bin/backend-service -Dhttp.port=PORT_NUM

在浏览器输入http://localhost:PORT_NUM能看到Test即启动成功

4.2 启动UI

它是一个Play应用,启动方式如下:

 

#1. 修改web/conf/application.conf的如下配置search.engine = "default"elasticsearch.dataset.url = "$YOUR_DATASET_INDEX_URL"elasticsearch.flow.url = "$YOUR_FLOW_INDEX_URL"datasets.tree.name = "$YOUR_HOME/Documents/wherehows_tmp/resource/dataset.json"flows.tree.name = "$YOUR_HOME/Documents/wherehows_tmp/resource/flow.json"database.opensource.username = "wherehows"database.opensource.password = "wherehows"database.opensource.url = "jdbc:mysql://localhost/wherehows?charset=utf8&zeroDateTimeBehavior=convertToNull"#2. dev-模式 启动cd web$PLA_HOME/play "run PORT_NUM"#3. 发布程序cd webgradle dist在`target/universal`下就包含了zip包

在浏览器输入http://localhost:PORT_NUM就可以看到了

5. 新增HIVE-ETL-Job

保证backend-service应用启动的前提下,例如http://localhost:9000,教程在 这里

5.1 增加公共配置属性到wherehows.wh_property

NOTE:这一步骤做一次就好了,直接刷脚本吧

改一下路径INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.app_folder','$YOUR_HOME/Documents/wherehows_tmp/app_folder','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.db.driver','com.mysql.jdbc.Driver','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.db.jdbc.url','jdbc:mysql://localhost/wherehows?charset=utf8&zeroDateTimeBehavior=convertToNull','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.db.password','wherehows','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.db.username','wherehows','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.ui.tree.dataset.file','$YOUR_HOME/Documents/wherehows_tmp/resource/dataset.json','N',NULL);INSERT INTO `wh_property` (`property_name`,`property_value`,`is_encrypted`,`group_name`) VALUES ('wherehows.ui.tree.flow.file','$YOUR_HOME/Documents/wherehows_tmp/resource/flow.json','N',NULL);

5.2 新增Hive-database

文档说明在 这里,那些Required=N的字段也必须给,文档描述有误

URL: http://localhost:9000/cfg/dbMethod: POSTBody(JSON):{"db_id": 10001,"db_code": "HIVE_DEMO","db_type_id": 0,"description": "HIVE_DEMO_desc","cluster_size": 0,"associated_data_centers": 1,"replication_role": "MASTER","uri": "Teradata://sample-td","short_connection_string": "SAMPLE-HIVE"

}

5.3 新增ETL-Job

文档说明在 这里,这里的wh_etl_job_name字段取值去metadata-etl/src/main/java/metadata/etl/models/EtJobName.java里找,这里没有完全列举。。。

 
URL: http://localhost:9000/cfg/dbMethod: POSTBody(JSON):{"db_id": 10001,"db_code": "HIVE_DEMO","db_type_id": 0,"description": "HIVE_DEMO_desc","cluster_size": 0,"associated_data_centers": 1,"replication_role": "MASTER","uri": "Teradata://sample-td","short_connection_string": "SAMPLE-HIVE"

一旦新增成功后,backend-service在下一次调度时就会去执行了

6. 后续

  • 理解针对Hive的E-T-L过程,完善目前UI界面的缺陷

转载:https://blog.csdn.net/houzhizhen/article/details/66972166

WhereHows 安装相关推荐

  1. linux环境下nacos的安装+启动,阿里云服务器安装nacos

    nacos安装+启动(linux环境): 基础:安装java环境 官网下载压缩包:如 nacos-server-1.2.1.tar.gz 放在自定义目录下 # 解压 tar -xvf nacos-se ...

  2. Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败

    [Alibaba Cloud Linux 2.1903 LTS 64位]服务器yum源下载404 failure: repodata/repomd.xml from docker-ce-stable: ...

  3. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  4. 在docker上安装部署tomcat项目 超简单,拿来主义

    在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...

  5. docker一步安装mysql,docker的魅力就在于此

    正常来说,使用docker安装东西的步骤是serach它有没有,然后pull它 这里其实只要一步(如果你没有安装过.没有端口占用等问题的话!!) $ docker run -d -p 3306:330 ...

  6. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  7. Linux下安装Java8

    Linux(ubuntu)下Java8安装 1.下载jdk8 这个看大家了,linux版本的就可以 2.创建jvm文件夹 在根目录下创建名为jvm的文件夹(在哪里创建看个人) $ sudo mkdir ...

  8. Linux安装mysql,一步到位!

    今天在腾讯云上面买了一个服务器,想要把自己的项目部署一下,就要安装mysql,以下是我的安装步骤,在网上有很多人把install敲错了,还有的少-get,种种错误试完之后,我决定发一篇 sudo ap ...

  9. Maven安装与配置(最实用!!!)eclipse中配置maven

    Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...

  10. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

最新文章

  1. padans的DataFrame
  2. http://blog.csdn.net/wemedia/details.html?id=40237
  3. VMware文件扩展名
  4. 计算机控制学什么,计算机控制技术专业介绍
  5. 超越竞争(2) 价值创新
  6. 第二届(2009年)中国信息技术应用学术研讨会征文延期通知
  7. 朋友面试被问到---静态构造函数
  8. (一)深度伪造的视频人脸传输
  9. 大数据分析师培训出来就业前景怎么样?数据分析有没有发展前景?
  10. 节后一起搞学习!聊一聊我在 B 站上自学编程的经历吧
  11. JavaWeb宠物管理系统(源码+文档)
  12. Interesting卡常数
  13. ruby 安装bundler的方法
  14. 15.正则表达式扩展正则字符处理
  15. Kubernetes--学习笔记-4-Kubernetes 集群搭建过程中常用命令
  16. ECAMScript6基础知识
  17. 利用python绘制简易词云图(使用jieba进行中文分词)
  18. 看不到 虚拟打印机 adobe pdf printer
  19. ReportStudio入门教程(七十二) - 显示时间进度(进度条版)
  20. arduino 定时器、定时中断与PWM使用以及注意事项

热门文章

  1. Mac上几款好用磁盘分析备份管理工具
  2. loadrunner11破解失败,已解决“ license security violation.Operation is not allowed ”问题
  3. 清理谷歌浏览器注册表_【从注册表解决谷歌浏览器主页被篡改】注册表被篡改_谷歌浏览器被360篡改...
  4. ios开发收藏按钮_即刻APP收藏按钮的实现
  5. 【2022年江西省研究生数学建模】水汽过饱和的核化除霾 31页论文分析
  6. 数据挖掘导论课后习题答案-第五章
  7. 如何设置计算机屏幕不正,显示器颜色不正常如何调_电脑显示屏的颜色不对如何处理...
  8. pe下bootice修复Linux引导,快启动pe工具之bootice引导修复工具使用教程
  9. 几十个珍藏的网站,相信你会用到的
  10. 小米路由器R1D改造记录-安装MIXBOX