wherehows是Linkedin开源的大数据治理框架,提供了元数据管理,数据血缘,数据预览,集成多种数据源的功能,最近在进行调研工作
类似的框架有Netflix的metacat,这个两个开源项目都是坑不少,目前还在踩坑阶段中…由于网上关于这两个项目的文章有价值,本文希望能对你有帮助
其他公司也有很多类似的数据发现系统,参考:Data Discovery Platforms and Their Open Source Solutions
首先的坑是项目文档不统一的问题,项目首页的文档和get-start的文档不一致,get-start的文档比较首页的文档步骤要多不少
1 2 https://github.com/linkedin/WhereHows
1 2 https://github.com/linkedin/WhereHows/blob/master/wherehows-docs/getting-started.md
wherehows提供了VM和quick start版本,我根本就没有去看这个版本,直接尝试了从源码编译
1.官方的guide第一步是让你创建mysql的用户和密码
1 2 3 4 5 6 7 8 CREATE DATABASE wherehows DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; CREATE USER 'wherehows'; SET PASSWORD FOR 'wherehows' = PASSWORD('wherehows'); GRANT ALL ON wherehows.* TO 'wherehows';
去workbench中查看一下 users and privileges , 多了wherehows用户
2.第二步,从github上git clone源代码,我git的是master分支
1 2 git@github.com:linkedin/WhereHows.git
3.在刚刚创建的wherehows database中做一些初始化的操作
wherehows这个database还是空的,官方的教程是 Execute the DDL files to create the required repository tables in wherehows database.
就是让你执行 wherehows-data-model/DDL 目录下的脚本来创建表以及插入一些数据
到这个子项目中查看一下 READMR文档 ,执行下面的代码来批量创建表和插入数据
1 2 3 cd WhereHows/wherehows-data-model/DDL mysql -hlocalhost -uwherehows -pwherehows -Dwherehows < create_all_tables_wrapper.sql
成功的输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 lintong@master:~/coding/java/WhereHows/wherehows-data-model/DDL$ mysql -hlocalhost -uwherehows -pwherehows -Dwherehows < create_all_tables_wrapper.sql mysql: [Warning] Using a password on the command line interface can be insecure. Tables_in_wherehows cfg_application cfg_cluster cfg_data_center cfg_database cfg_deployment_tier cfg_job_type cfg_job_type_reverse_map cfg_object_name_map cfg_search_score_boost comments dataset_capacity dataset_case_sensitivity dataset_compliance dataset_constraint dataset_deployment dataset_index dataset_inventory dataset_owner dataset_partition dataset_partition_layout_pattern dataset_reference dataset_schema_info dataset_tag dict_business_metric dict_dataset dict_dataset_field_comment dict_dataset_instance dict_dataset_sample dict_dataset_schema_history dict_field_detail dir_external_group_user_map dir_external_group_user_map_flatten dir_external_user_info favorites field_comments filename_pattern flow flow_dag flow_execution flow_execution_id_map flow_job flow_owner_permission flow_schedule flow_source_id_map job_attempt_source_code job_execution job_execution_data_lineage job_execution_ext_reference job_execution_id_map job_execution_script job_source_id_map log_dataset_instance_load_status log_lineage_pattern log_reference_job_id_pattern source_code_commit_info stg_cfg_object_name_map stg_database_scm_map stg_dataset_owner stg_dataset_owner_unmatched stg_dict_business_metric stg_dict_dataset stg_dict_dataset_field_comment stg_dict_dataset_instance stg_dict_dataset_sample stg_dict_field_detail stg_dir_external_group_user_map stg_dir_external_group_user_map_flatten stg_dir_external_user_info stg_flow stg_flow_dag stg_flow_dag_edge stg_flow_execution stg_flow_job stg_flow_owner_permission stg_flow_schedule stg_git_project stg_job_execution stg_job_execution_data_lineage stg_job_execution_ext_reference stg_product_repo stg_repo_owner stg_source_code_commit_info track_object_access_log user_login_history user_settings users watch wh_etl_job_history wh_etl_job_schedule
4.由于这个项目是gradle构建的,所以需要使用gradle来编译
1 2 lintong@master:~/coding/java/WhereHows$ ./gradlew build
在编译的过程中,在编译子项目wherehows-etl的时候报错了
原来是少了jar包,再次去看README文档,官方说
需要在 wherehows-etl/extralibs 目录下添加一些第三方的jar包,这些jar是在maven仓库下载不到的
我首先看文档,下载了 gsp.jar 这个jar包, 下载地址,解压了之后将 gsp.jar 放在 extralibs 目录下
1 2 http://www.sqlparser.com/dl/gsp_java_trial_1_9_4_4.zip
然后再次编译试试,如果编译之中下载jar包比较慢的话,我会直接wget下载这个jar包,然后丢到~/.m2/repository下面各个不同jar包的本地仓库中
最终编译成功
5.然后按照官方的文档,打开两个终端,分别启动 wherehows 的后端和前端组件
1 2 3 lintong@master:~/coding/java/WhereHows$ ./gradlew wherehows-backend:runPlayBinary lintong@master:~/coding/java/WhereHows$ ./gradlew wherehows-frontend:runPlayBinary
然后访问 localhost:9001看web界面,第一次当然是不可能成功的
至此,wherehows首页的readme已经走不通了,继续参考get-start的文档
1 2 https://github.com/linkedin/WhereHows/blob/master/wherehows-docs/getting-started.md
文档中说需要继续添加第3放的jar,需要添加的jar包地址,我只加了这两个,另外两个Oracle的jar我没有添加
1 2 https://github.com/linkedin/WhereHows/tree/master/wherehows-etl/extralibs
按照文档还需要创建一些mysql用户
注意这里官方文档写错了,不是 GRANT ALL ON wherehows.* TO ‘wherehows‘@’wherehows’; 而是 GRANT ALL ON wherehows.* TO ‘wherehows‘@’localhost’;
1 2 3 4 5 6 7 8 CREATE USER 'wherehows'@'localhost' IDENTIFIED BY 'wherehows'; GRANT ALL ON wherehows.* TO 'wherehows'@'localhost'; 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'@'%';
结果成功
1 2 Query OK, 0 rows affected (0.00 sec)
文档中说还需要初始化一些表,不太清楚和刚开始的有没有区别,再初始化一遍
1 2 3 4 5 6 7 8 9 cd ~/coding/java/WhereHows/wherehows-data-model/DDL 进入mysql mysql> use wherehows Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> source /home/lintong/coding/java/WhereHows/wherehows-data-model/DDL/create_all_tables_wrapper.sql
6.初始化es的索引
wherehows中数据集的搜索需要用到es,暂时先跳过
7.接着来安装wherehows的前端
上面报的错的原因,原来是由于需要修改application.conf配置文件去 match your environment
但是怎么做修改,在getting-start文档中缺没有说明白,所以只能去看子项目 wherehows-frontend 的README文档
界面
搜索
浏览功能
数据集页面
Schema
属性页面
hive的数据集详情页
hdfs的数据集详情页