StreamSet的环境的初始化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了StreamSet的环境的初始化相关的知识,希望对你有一定的参考价值。

参考技术A 最近也是想在StreamSets上去操作一个简单的demo,也是遇到一些小的问题。记录汇总一下,也算是重新温故一下。

环境:
        CDH-5.13.3
        StreamSets 3.3.1

demo主要是基于网上一篇介绍如何增量同步mysql的数据到hive库中。

上面大概就是整个过程的工作流。

问题汇总:
1:连接mysql 的时候因为没有mysql的jdbc连接包,因此需要手动上传jdbc连接包。操作如下:

本以为会很正常上传jdbc的包,结果出现了一个在StreamSets下无法创建lib的错误信息(具体信息没有截图),查看官网的操作才知道,解决办法如下:

官网地址:https://streamsets.com/documentation/datacollector/latest/help/index.html#datacollector/UserGuide/Configuration/ExternalLibs.htm
1:在安装streamSets的目录下创建sdc-extras
mkdir /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras
2:对目录进行授权给sdc用户
chown -R sdc:sdc  /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras
3:配置相关环境配置,可以只在cm中进行操作。
    3.1:修改export STREAMSETS_LIBRARIES_EXTRA_DIR="/……/sdc-extras/"

    3.2:修改sdc-security.policy(测试的时候没添加也成功过,建议还是添加一下。毕竟也很简单一点)
grant codebase "file:///opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras/-"   permission java.security.AllPermission;;

4:执行完后,上传jar包。(测试的时候突然重启了一下,master节点启动不了,后来停止了整个服务重启了streamsets这个组件就好了)

5:执行整个流程。

Windows环境下初始化mysql

Linux环境中,安装好mysql后,还不能直接启动服务,必须先对数据库进行初始化。初始化的工作主要包括:
  • 初始化日志、表空间等数据库必须的文件;
  • 创建并初始化系统数据库(mysql)。
初始化完成后,启动mysqld守护进程,方可访问数据库。
 
在Windows的环境下,安装包内已经自带了一个初始化好的环境,安装后展开在mysql根目录的data子目录。所以并不需要手工进行初始化。但是某些情况下,也可能需要从零开始初始化数据库,比如:
  • 数据文件被破坏,需要重建;
  • 希望保留现有环境不动,建立一个新的环境;
  • 希望建立一个干净的环境。
不幸的是,Linux环境下是利用mysql_install_db.sh脚本初始化数据库环境的;而在windows版中并没有提供相应的脚本。那么该怎么办呢?
经过对Linux环境下的mysql_install_db.sh的分析,发现初始化数据库的命令主要是以下几行:
 
技术分享
技术分享技术分享mysql_install_db.sh
# Pipe mysql_system_tables.sql to "mysqld --bootstrap"
s_echo "Installing MySQL system tables..."
if { echo "use mysql;"; cat $create_system_tables $fill_system_tables; } | eval "$filter_cmd_line" | $mysqld_install_cmd_line > /dev/null
then
  s_echo "OK"

  s_echo "Filling help tables..."
  # Pipe fill_help_tables.sql to "mysqld --bootstrap"
  if { echo "use mysql;"; cat $fill_help_tables; } | $mysqld_install_cmd_line > /dev/null
  then
    s_echo "OK"
......
技术分享

 

 
其中:
  • $create_system_tables、$fill_system_tables和$fill_help_tables分别是创建系统数据库、初始化系统数据库中的数据、和初始化帮助数据;
  • $filter_cmd_line是过滤掉主机名(用于交叉初始化非本机运行数据库环境的情况,可忽略);
  • $mysqld_install_cmd_line主要是"mysqld --bootstrap"命令;
 
分析清楚上述内容,就可以自己手工初始化数据库了。具体步骤如下:
  1. 设置mysql配置文件。主要是设置basedir(mysql的home目录,如:/opt/mysql-5.1.40)和datadir(数据库文件目录,如:/var/db/mysql)两个参数。
  2. 初始化数据库目录,检查/var/db/mysql和/var/db/mysql/mysql(系统数据库)目录是否存在,若不存在则手工创建之。
  3. 准备初始化数据库的sql脚本。将/opt/mysql-5.1.40/share目录下的mysql_system_tables.sql、mysql_system_tables_data.sql和fill_help_tables.sql三个文件拷贝到/tmp目录下,并在每个文件的最开始插入“use mysql;”一行。
  4. 执行下列命令,初始化数据库:
    • /opt/mysql-5.1.40/bin/mysqld.exe --bootstrap --console < /tmp/mysql_system_tables.sql
    • /opt/mysql-5.1.40/bin/mysqld.exe --bootstrap --console < /tmp/mysql_system_tables_data.sql
    • /opt/mysql-5.1.40/bin/mysqld.exe --bootstrap --console < /tmp/fill_help_tables.sql
  5. 运行/opt/mysql-5.1.40/bin/mysqld.exe启动数据库服务(注意:停止数据库服务的命令是/opt/mysql-5.1.40/bin/mysqladmin.exe -uroot shutdown)。
  6. 运行/opt/mysql-5.1.40/bin/mysql.exe -uroot,访问数据库服务,验证数据库是否正常。
至此数据库已初始化完毕,可以正常访问了。

以上是关于StreamSet的环境的初始化的主要内容,如果未能解决你的问题,请参考以下文章

Streamset读取kafka数据写入kafka

在CDH5.14.4 中安装StreamSets与案例运行

Streamsets爬取CSDN博客之星统计数据并入库

OpenSUSE 15.3桌面环境初始化

Windows环境下初始化mysql

Windows环境下初始化mysql