前言:最近在公司接到一个业务:将MySQL的数据实时同步到HBase中,刚接手的时候一脸蒙,在不断的探索中,也发现其实这条线真的很好走,因为有很多方案可以选择。一下就是其中一种,后面我也会分享更多其他相关的方案,供大家参考。这种方式我自己尝试了,并没有使用在真正的开发中,因为我们需要实时获取到增删改的时间 ,并将这个时间写入HBase,作为数据分析的参考。
1、支持多种安装方式
1.1、核心安装包(Core Tarball)
该安装包包含核心的SDC软件,使该软件具有最小的软件连接器集合,当然你可以手动下载额外的节点(Stage)
①通过Streamsets的UI进行安装,UI上点击的位置为:在该软件界面的右边(图标是一个礼物盒子。。。)。
②也可以通过使用CLI进行安装,安装过程如下所示:
1、下载该【核心安装包】,比如版本为:streamsets-datacollector-core-3.0.2.0.tgz
2、解压该安装包
- $tar xvzf streamsets-datacollector-core-3.0.2.0.tgz
3、列出所有的可下载的所有节点Stage库,可通过如下命令:
- $./bin/streamsets stagelibs -list
4、通过CLI安装所需要的节点库,通过如下命令:
- $ ./bin/streamsets stagelibs -install=<stageid1>,<stageid2>
1.2、Cloudera安装包(Cloudera Parcel)
Cloudera版本安装过程如下所示:
1、将CSD拷贝到一个目录中,命令如下:
- $ mv STREAMSETS-3.0.2.0.jar /opt/cloudera/csd/
2、修改文件的权限,命令如下:
- $ sudo chown cloudera-scm:cloudera-scm STREAMSETS-3.0.2.0.jar && sudo chmod 644 STREAMSETS-3.0.2.0.jar
3、重启Cloudera管理器,命令如下:
- $ sudo /etc/init.d/cloudera-scm-server restart
1.3、包含所有组件的完整安装包(Full Tarball)
完整版的安装过程如下所示:
1、下载该安装包
2、解压
- $ tar xvzf streamsets-datacollector-all-3.0.2.0.tgz
3、解压之后,就可以直接启动,启动命令为:
- $ streamsets-datacollector-3.0.2.0/bin/streamsets dc
4、启动之后就可以通过浏览器查看了,默认的访问地址为:
- Browse to http://<system-ip>:18630/
5、UI界面看到之后,就可以通过该密码进行登录
用户名和密码都为:admin
1.4、完整的RPM包(FullRPM)
该版本的安装过程如下:
1、选择合适的操作系统版本(如红帽的el6或者el7),然后通过如下命令进行操作
- $ tar xf streamsets-datacollector-3.0.2.0-[operating system]-all-rpms.tar
- $ yum localinstall streamsets*.rpm
2、启动该软件在el6操作系统,操作命令为:
- $ service sdc start
3、启动该软件在el7操作系统,操作命令为:
- $ systemctl start sdc
4、启动之后就可以通过浏览器查看了,默认的访问地址为:
- Browse to http://<system-ip>:18630/
5、UI界面看到之后,就可以通过该密码进行登录
用户名和密码都为:admin
1.5、Docker镜像(Docker Image)
Docker版本的安装过程如下所示:
1、可以使用docker的命令进行启动,命令如下:
- $ docker run --restart on-failure -p 18630:18630 -d --name streamsets-dc streamsets/datacollector
2、UI界面看到之后,就可以通过该密码进行登录
用户名和密码都为:admin
3、最后一步进行发布就可以了,命令如下:
- $ docker run --publish 18633:18633 --name edge --rm streamsets/datacollector-edge
1.6、源码
源码地址为:http://github.com/streamsets
硬件环境要求:
将Data Collector安装在满足以下最低要求的机器上。要以集群执行模式运行管道,集群中的每个节点都必须满足最低要求。
组件 | 最小 |
---|---|
操作系统 | 使用以下操作系统和版本之一::
|
CPU核数 | 2 |
内存 | 1 GB |
硬盘空间 | 6 GB |
文件大小 | 32768 |
Java版本 | Oracle Java 8 or OpenJDK 8 |
浏览器 |
|
数据收集器 需要大量的文件描述符才能在所有阶段正常工作。大多数操作系统提供一个配置来限制进程或用户可以打开的文件数量。默认值通常小于32768个文件描述符的Data Collector 要求。
使用以下命令验证当前用户的配置限制:
- ulimit -n
增加每个操作系统的打开文件限制是不同的。请查阅您的操作系统文档以获取首选方法。
增加Linux上的限制
要增加Linux上的打开文件限制,请参阅以下解决方案:如何设置ulimit值。
这个解决方案应该可以在Red Hat Enterprise Linux,CentOS和Ubuntu上运行。但是,请参阅您的操作系统的管理员文档以获取首选方法。
增加Mac OS上的限制
您用于增加Mac OS上限的方法可能因每个版本而异。
要增加计算机的限制 - 以便在重新启动终端并重新启动计算机后保留限制 - 创建属性列表文件。以下步骤适用于Mac OS Yosemite,El Capitan和Sierra:
使用以下命令创建一个名为的属性列表文件 limit.maxfiles.plist:
- sudo vim /Library/LaunchDaemons/limit.maxfiles.plist
maxfiles属性定义了打开的文件限制。文件中的第一个值是软限制。第二个值是硬限制。
例如,在下面 limit.maxfiles.plist文件,软限制和硬限制均设置为32,768:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>Label</key>
- <string>limit.maxfiles</string>
- <key>ProgramArguments</key>
- <array>
- <string>launchctl</string>
- <string>limit</string>
- <string>maxfiles</string>
- <string>32768</string>
- <string>32768</string>
- </array>
- <key>RunAtLoad</key>
- <true/>
- <key>ServiceIPC</key>
- <false/>
- </dict>
- </plist>
使用以下命令加载新的设置:
- sudo launchctl unload -w /Library/LaunchDaemons/limit.maxfiles.plist
- sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
使用以下命令检查是否修改了系统限制:
launchctl限制maxfiles使用以下命令来设置会话限制:
- ulimit -n 32768
注:可以选择其中的一种方式安装即可。
2、Streamsets运行平台
Streamsets运行在Linux及Mac OS X 平台中,暂时不支持Windows版本
3、Streamsets的特征
1、通过使用streamsets可以在几分钟内构建批处理流程
2、构建稳健的数据流管道
3、智能,自我修复的数据流管道
3.1、拖放连接器用于批量和流式源和目标。
3.2、最小的模式规范加速了开发。
3.3、智能传感器自动检测和纠正数据漂移检测。
4、消费数据的轻量级转换
4.1、在管道(pipeline)中的任何点上转换数据。
4.2、利用几十个内置的处理器或设计自己的。
4.3、在需要时触发自定义代码。
4.4、识别并处理个人数据/ PII到达。
5、智能监测和错误检测
5.1、通过内置的测量和监测确保持续的数据传输。
5.2、精细的度量标准来查明问题。
5.3、设置错误情况的触发器和警报。
5.4、在管道的任何一点进行特别的数据反思。
6、严格的数据流操作
6.1、即使面对不断变化的持续集成和部署。
6.2、性能警报和管道快照可简化故障排除。
6.3、升级底层系统时零停机。
6.4、在群集中,跨多个云甚至在边缘设备上(使用SDC Edge)部署和管理任何地方。
4、应用场景-常见用例
4.1、用例一:
Apache Kafka 使用StreamSets,您可以将应用程序连接到Kafka而无需编写一行代码!
4.2、用例二:
Hadoop摄取 StreamSets可以让您轻松连续地将数据提取到Hadoop和周围的生态系统中。
4.3、用例三:
云迁移 将数据迁移到云服务提供商(包括亚马逊,微软和谷歌)。
4.4、用例四:
搜索启用 StreamSets使得用任何来源的数据填充选择的搜索解决方案变得非常容易。
转自:https://blog.csdn.net/superzyl/article/details/79108616 (尊重原创,感谢涛哥这段时间的帮助)