使用StreamSets Data Collector实时同步oracle数据到kafka
一、前言
二、StreamSets Data Collector
简介
安装
1. 下载安装包
2. 解压
3. 在安装目录外新建文件夹放置configuration, data, log, and resource文件夹(官方推荐)
4. 修改配置文件
5. 将安装目录下etc中的所有文件拷贝到我们新建的conf目录下
6. 启动
三、StreamSets Data Collector实战:实时同步oracle数据到kafka
知识准备
Oracle准备
1. 启用LogMiner
2. 启用 Supplemental Logging
3. 创建用户
4. 提取LogMiner Dictionary到redo log (可选)
搭建Oracle到Kafka的Pipeline
1. 安装相关组件
2. 构建Pipeline
3. 测试
一、前言
最近收到需求,调研如何实时同步oracle数据到kafka,这里先做一个粗略的总结,然后简单介绍下如何使用StreamSets完成需求。 先说下我所知道的几种可行方案:
Oracle GoldenGate (OGG) 这个大家应该都知道吧,oracle自家产品,网上资料很多,缺点就是收费,今天先不聊。
flume-ng-sql-source. 这是github上一个开源工具,需要配合flume。大致过程是在flume中配置一个自定义查询语句custom.query,包含特定格式where incrementalField > $@$,只返回incrementalField增大的数据。incrementalField是你指定需要监控的字段,该字段增大了就代表有数据增加或改变,一般是create_time、update_time或自增id等字段。同时还需配置一个查询间隔query.delay,间隔一定时间执行上面定义的查询语句。 理论上只要把查询间隔设置得足够小,就可以基本做到近实时。但是这种主动查询获取数据的方式耗时耗资源,显然不合适实时计算,更适合离线,这里也就不深入研究了。 可参考: https://github.com/mvalleavila/flume-ng-sql-source https://www.jb51.net/article/144031.htm
Kafka Connect Oracle 这也是github上的开源工具(https://github.com/erdemcer/kafka-connect-oracle),现在还在更新。原理与今天要讲的StreamSets类似,都是通过Oracle的LogMiner获取数据库的增量和变量数据,仅支持oracle to kafka,有兴趣可以去了解下。
StreamSets Data Collector 今天的主角,下面介绍。
二、StreamSets Data Collector
简介
官网:https://streamsets.com/ 中文站:https://streamsets.com/(不确定是否是中文官网) StreamSets Data Collector是StreamSets下的一个子产品,先来一段中文站上的介绍感受下它的自信:
StreamSets Data Collector(SDC)是目前最先进的可视化数据采集配置工具,非常适合做实时的数据采集,兼顾批量数据采集和不落地的数据ETL。如果您正在使用Flume、Logstash、Sqoop、Canal等上一代数据采集工具,推荐您使用SDC作为升级替换。
它有以下几个特点:
方便 - 可通过可视化界面操作、拖拽构建数据管道(Pipeline),不需要写代码;在界面上还可实时查看数据流转情况。
功能强大 - 构建Pipeline的数据源(Origins)、处理器(Processors)和接收端(Destinations)支持非常丰富,基本包括了各种常见的组件,如HDFS、Kafka、MySQL、Oracle等。详细可见:Origins、Processors、Destinations
开源免费
安装
参考:https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Installation/Install_title.html StreamSets Data Collector提供了多种安装方式,这里演示第四种Core Installation,安装部分核心功能并手动启动,其他功能可按需在界面上操作安装。
1. 下载安装包
https://archives.streamsets.com/datacollector/3.15.0/tarball/activation/streamsets-datacollector-core-3.15.0.tgz
2. 解压
$> tar -zxvf streamsets-datacollector-core-3.15.0.tgz -C ~/
$> cd ~
$> mv streamsets-datacollector-3.15.0/ streamsets-datacollector/
3. 在安装目录外新建文件夹放置configuration, data, log, and resource文件夹(官方推荐)
$> cd ~
$> mkdir -p sdc/conf
$> mkdir -p sdc/data
$> mkdir -p sdc/log
$> mkdir -p sdc/resources
4. 修改配置文件
在安装目录下libexec/sdc-env.sh中指定conf、data、log和resources的路径,即上面我们新建的文件夹路径
$> vim ~/streamsets-datacollector/libexec/sdc-env.sh
export SDC_DATA=~/ sdc/ data
export SDC_LOG=~/ sdc/ sdc
export SDC_CONF=~/ sdc/ conf
export SDC_RESOURCES=~/ sdc/ resources
5. 将安装目录下etc中的所有文件拷贝到我们新建的conf目录下
$> cp ~/streamsets-datacollector/etc/* ~/sdc/conf/
6. 启动
$> cd ~/streamsets-datacollector
$> bin/streamsets dc
如果出现下面类似的内容则表示启动成功
Java 1. 8 detected; adding $SDC_JAVA8_OPTS of "-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -Djdk.nio.maxCachedBufferSize=262144" to $SDC_JAVA_OPTS
Bypass activation because SDC contains only basic stage libraries.
Logging initialized @1028ms to org. eclipse. jetty. util. log. Slf4jLog
Running on URI : 'http://bigdata02:18630'
启动成功后就可以在浏览器访问StreamSets Data Collector的可视化界面了,地址就是上面最后一行的URI,用户名和密码都是admin
常见问题: Configuration of maximum open file limit is too low: 1024 (expected at least 32768). Please consult https://goo.gl/6dmjXd
解决办法: 在/etc/security/limits.conf文件末尾加上下面两行(不要漏了*),后面的数字大于32768就行:
* soft nofile 102400
* hard nofile 102400
断开系统终端,重新连接,然后再次启动streamset就可以了
三、StreamSets Data Collector实战:实时同步oracle数据到kafka
这里简单演示一个StreamSets Data Collector(SDC)中构建Pipeline的案例,实时同步oracle数据到kafka,用到的Origin是Oracle CDC Client,Destination是Kafka Producer,不使用Processor。SDC还有很多Origins和Destinations,可以构建出各种你想要的Pipeline,除了各个数据组件的自身配置可能会有差异,总体流程还是一样的。
Oracle CDC Client通过Oracle LogMiner解析redo logs获取变化数据信息,适合实时同步增量和变量数据。如果还想获取Oracle中的原始数据,可以使用JDBC Query Consumer或JDBC Multitable Consumer源另外再搭建一个单独的Pipeline。
Oracle CDC Client的使用可以参考: https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Origins/OracleCDC.html#concept_rs5_hjj_tw https://streamsets.com/blog/replicating-oracle-to-mysql-and-json/#ora-01291-missing-logfile
知识准备
因为涉及到Oracle CDC Client中的相关配置,这里简单科普一点Oracle redo log和LogMiner的相关知识(参考官网资料)。
Redo log是Oracle的操作记录日志,记录了所有对用户数据和数据字典的改变,用以备份和恢复数据。LogMiner是Oracle开发的日志挖掘工具,可以解析redo log,分析出对数据的DML和DDL操作。为了解析redo log,LogMinder需要用到一个字典(LogMiner dictionary)。LogMiner使用该字典来解析表名和字段名。如果没有字典,解析出来的表名和字段名就只是内部的object ID,数据是二进制码。
LogMiner可以从下面三个地方获取字典,有不同的效果和性能。
直接使用online catlog 。速度最快,但是无法获取DDL操作,一旦表结构更改,LogMiner将无法解析出可执行SQL。适用于表结构不会被修改的场景。
将字典提取到redo log文件中 。可以获取DDL操作,但是会消耗数据库资源,官网资料建议在非高峰时期进行提取操作。表结构改变后需要重新操作;在操作的时候不能进行表结构变更。
将字典提取到平面文件(Flag File)中。由于Oracle CDC Client配置中没有这个选项,这里就不介绍了,想了解可以查看官网资料
Oracle CDC Client中需要配置LogMiner dictionary来源,提供了online catlog和redo log两个选项。对于这两个选项,官方文档提示:
Important: When using the dictionary in redo logs, make sure to extract the latest dictionary to the redo logs each time table structures change. Note that using the dictionary in redo logs can have significantly higher latency than using the dictionary in the online catalog. But using the online catalog does not allow for schema changes.
就是说: a. 如果使用redo logs中的字典,那在每次表结构改变后需要重新将字典提取到redo logs中。 b. 效率上,使用redo logs中的字典会比使用online catlog中的字典有更高的延迟,但是使用online catlog中的字典无法获取表结构更改。 需要自己根据需求取舍。
Oracle准备
1. 启用LogMiner
a. 使用有DBA权限的用户登录Oracle b. 检查数据库日志模式
SQL > select log_mode from v$database ;
如果结果是ARCHIVELOG,可以转至Task2。 如果结果是NOARCHIVELOG,执行下面SQL命令
SQL > shutdown immediate;
SQL > startup mount;
SQL > alter database archivelog;
SQL > alter database open ;
2. 启用 Supplemental Logging
为了从日志里获取数据,LogMiner需要启用数据库或表的supplemental logging。Supplemental logging又分为 identification key logging和full supplemental logging。Identification key logging只包含主键和发生改变的字段数据,而full supplemental logging包含了所有字段的数据,这两种根据需求选择一种即可。
a. 启用Identification key logging或full supplemental logging 如果你的Oracle版本是12c 或 18c multitenant,最好是为表容器启用日志,而不是整个数据库。
ALTER SESSION SET CONTAINER=;
启用Identification key logging 可以指定一张表启用
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE . ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
也可以同时为数据库中所有表启用
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
启用full supplemental logging 指定一张表启用
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE . ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
为数据库中所有表启用
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
b. 提交修改
ALTER SYSTEM SWITCH LOGFILE;
为了方便,我这里直接为所有表启用full supplemental logging。这里还是需要DBA用户操作。
SQL > ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ( ALL ) COLUMNS ;
SQL > ALTER SYSTEM SWITCH LOGFILE;
3. 创建用户
在CDC Client源中需要配置账户信息连接Oracle,要求该用户有一定权限,所以这里新建一个用户。不同的Oracle版本有不同的方式。
Oracle 12c或18c 多租户版本
ALTER SESSION SET CONTAINER=cdb$root;
CREATE USER IDENTIFIED BY CONTAINER=all;
GRANT create session, alter session, set container, logmining, execute_catalog_role TO CONTAINER=all;
GRANT select on GV_$DATABASE to ;
GRANT select on V_$LOGMNR_CONTENTS to ;
GRANT select on GV_$ARCHIVED_LOG to ;
ALTER SESSION SET CONTAINER=;
GRANT select on . TO ;
Oracle 12c或18c标准版本
CREATE USER IDENTIFIED BY ;
GRANT create session, alter session, logmining, execute_catalog_role TO ;
GRANT select on GV_$DATABASE to ;
GRANT select on V_$LOGMNR_CONTENTS to ;
GRANT select on GV_$ARCHIVED_LOG to ;
GRANT select on . TO ;
Oracle 11g
CREATE USER IDENTIFIED BY ;
GRANT create session, alter session, execute_catalog_role, select any transaction, select any table to ;
GRANT select on GV_$DATABASE to ;
GRANT select on GV_$ARCHIVED_LOG to ;
GRANT select on V_$LOGMNR_CONTENTS to ;
GRANT select on . TO ;
我的是Oracle 11g,创建TEST_SDC用户,密码为123456。注意,这里同样需要使用具有DBA权限的用户操作。
SQL > create user TEST_SDC identified by 123456 ;
SQL > grant create session , alter session , execute_catalog_role, select any transaction , select any table to TEST_SDC;
SQL > grant select on GV_$ARCHIVED_LOG to TEST_SDC;
SQL > grant select on V_$LOGMNR_CONTENTS to TEST_SDC;
4. 提取LogMiner Dictionary到redo log (可选)
当你希望LogMiner使用来自redo log中的字典时,需要执行此步骤,将字典提取到redo log中,且必须在启动pipeline之前执行。如果使用online catlog中的字典,则不需要。
如果oracle版本是11g、12c或者18c,执行下面的的命令:
EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
如果是12c或者18c多租户版本
ALTER SESSION SET CONTAINER=cdb$root;
EXECUTE DBMS_LOGMNR_D.BUILD(OPTIONS=> DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);
搭建Oracle到Kafka的Pipeline
1. 安装相关组件
由于我安装的StreamSets Data Collector(SDC)是基础(core)版本,不包含oracle和kafka相关的组件,所以这里需要单独安装。如果是Full Installation应该就不需了,应该会包含所有的Origins和Destinations,但这个安装包太大了,我没有尝试。
为了对接oracle和kafka,这里需要在SDC里面安装JDBC和CDH Kafka 4.1.0(里面还有个Apache Kafka,但是一直没有安装成功)。安装方法有很多种,可以使用RPM或命令行安装,也可以在SDC管理界面中的Package Manager安装,可以参考官方教程Install Additional Stage Libraries。我这里演示使用Package Manager安装。
进入Package Manager
安装JDBC
第一次安装需要注册,按要求填好信息并进入邮箱验证就可以了。 需要注意的是,安装过程可能会因为网络原因安装失败,想再次安装的时候会报错,提示已经安装了。这时候需要去到SDC安装目录下的streamsets-libs中,把刚刚安装失败组件的文件夹删掉,然后在重新安装。
安装Kafka
安装JDBC驱动
JDBC驱动需要通过安装外部安装包的方式安装,可以参考官方教程。
新建个文件夹,作为外部包的安装路径
$> mkdir ~/ sdc/ external- libs
在~/streamsets-datacollector/libexec/sdc-env.sh中加入配置,将替换成你刚刚新建的文件夹路径:
export STREAMSETS_LIBRARIES_EXTRA_DIR="-"
在~/sdc/conf/sdc-security.policy中添加:
// user-defined external directory
grant codebase "file:///--" {
permission java.security.AllPermission;
};
下载JDBC驱动,我的是oracle 11g,下载的是ojdbc6,下载地址https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html
安装 重启SDC。
2. 构建Pipeline
新建Pipeline
create new pipeline -> 填写Title -> Save
Select Origin,选择Oracle CDC Client -> Select Destination,选择Kafka Producer
配置Pipeline 这里可以配置一些pipeline的信息,如名称、执行模式(Standalone、Cluster)等。有一个必须用户指定的配置就是错误数据处理。可以忽略、写入到文件或者写入到其他pipeline等。我这里为了方便直接忽略了。
配置Oracle CDC Client
这里只说明一些必须的配置项,其他配置项没有测试,详细说明参考官网。
Oracle CDC
Tables 需要采集数据的数据库表,可以填写多张表;每张表需要填写schema和table name;也可以通过在table name中填写表达式来匹配多张表; 我这里使用了SCOTT用户下面的EMP和DEPT两张表做测试。
Dictionary Source 选择LogMiner中字典的来源,有Online Catalog和Redo Logs两个选项; 我使用的是Online Catalog。
DB Time Zone 数据库服务器所在的时区,可以使用select dbtimezone from dual查看。
JDBC
JDBC Connection String JDBC连接Oracle的字符串,根据自己的数据库情况填写
Credentials
Username 连接数据库的用户名;用我们上面创建的用户TEST_SDC
Password 连接数据库的密码;用我们上面创建的用户密码123456
其他配置使用默认就行。
配置Kafka
这里只是简单配置,更详细内容可以参考官网。
Kafka
Broker URI Kafka集群地址。我的是bigdata01:9092,bigdata02:9092,bigdata03:9092
Topic 需要将数据写入哪个Topic。我的是oracle2kafka。
3. 测试
启动pipeline。 直接在pipeline界面点击start按钮。
启动kafka消费端
$> kafka-console-consumer
--bootstrap-server bigdata01:9092,bigdata02:9092,bigdata03:9092
--topic oracle2kafka
bootstrap-server与topic参数必须与上面kafka中配置相同。
测试
这里分别向上面配置过的两张表SCOTT.EMP和SCOTT.DEPT插入数据。这里一定要记得commit。
SQL > insert into SCOTT. DEPT values ( 65 , 'a' , 'b' ) ;
SQL > commit ;
SQL > insert into scott. emp values ( 1234 , 'Mike' , 'SALESMAN' , 7698 , '' , 1500 , 0 , 30 ) ;
SQL > commit ;
在pipeline页面上可以看到输入了2条数据,输出了2条数据,有0条错误。
在kafka的消费端也可以看到刚刚插入数据库的2条数据
至此,oracle到kafka的pipeline就搭建完成了。
你可能感兴趣的:(大数据,kafka,大数据)
中标 | 极客天成分布式存储软件成功中标华泰证券并行文件系统软件项目
极客天成ScaleFlash
分布式
2023年9月21日,北京极客天成科技有限公司分布式存储软件V3.0通过代理商成功中标华泰证券并行文件系统软件项目。华泰证券并行文件系统软件项目是服务于华泰证券量化投研的重点项目,是华泰证券能否取得可持续性竞争优势的关键所在,华泰证券多年深耕信用量化投研领域,基于大数据、人工智能、NLP等技术自主研发。汇聚各类市场数据,研发量化模型,能够高效全面地进行信用风险分析和研究。北京极客天成科技有限公司分
《数字时代的学与教》第四模块共读心得
屏西小学陈欣艳
在这个模块中,讲述了老师通过反馈得到的数据进行及时的教学决策。在当下信息技术不断发展的大背景下,通过数据收集体现学生的思考和思维层次,通过分析数据在课堂中了解学生的掌握情况,调整学生的教学策略。教师选用何种教学策略不是凭老师的经验,而是大数据统计出学生的学习诉求、学生对教学内容的掌握情况来决定的。新课程要求教师实行教学民主,与学生进行沟通、交流与合作,了解学生个性、学习基础、需要及对教学的意见,才
数据爬虫工作中的IP清理频率
KookeeyLena3
爬虫 tcp/ip 网络协议
在大数据和信息时代,数据爬虫已经成为获取信息的重要手段。然而,频繁的数据抓取往往会引发目标网站的反爬虫机制,导致IP地址被封禁。因此,对于经常进行数据爬虫抓取工作的人来说,合理管理和清理IP地址显得尤为重要。首先,我们要了解为何需要清理或更换IP。在爬虫工作中,频繁的请求很容易触发网站的安全机制,从而被封禁IP。一旦IP被封,爬虫将无法继续从该网站抓取数据。为了避免这种情况,爬虫工作者需要定期更换
人心
苏鹰鹰哥
人心人性是复杂,无法用所谓的理性和数据来分析,所有的分析从本质是错的,虽然常常会自我感觉良好,比如经济发展水平的分析,数据一大套一大套,成果一大堆一大堆,大数据啊!可根本无法解释,为什么人还不能满足,要怎么才能满足,这就是人性啊,人的欲望永远是个巨大的空洞,人性解决不了,一切都会归零!人最终会沦为罪的奴仆,心灵没有自由,心里没有平安!人心比万物都诡诈,坏到极处,谁能识透,惟有耶和华监察人心,按各人
大数据产品化的窗口期
可鱼KEYU
已经之身大数据行业三四年,按理说应该可以说点所谓的经验。但是,现在大数据行业似乎有行无市。看起来高大上,但距离日常好像很远。其实,已经不是这个样子,大数据杀熟每天都在发生,看来大数据确实是已经飞入寻常百姓家。实际上,从应用范围看,也确实是这个样子。但是现在所谓的大数据是大数据吗,现在大数据应用是我们应该看到的样子吗现在数据价值已经深入人心,但是现在所谓应用的数据都是宅数据。有百度数据,阿里数据,腾
【Python系列】signal信号处理
Kwan的解忧杂货铺@新空间代码工作室
s2 Python python 信号处理 开发语言
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kwan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术,jvm,并发编程redis,kafka,Spring,微服务等常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,
布隆过滤器:大数据的高效守门员(在 Spring Boot 项目中实现布隆过滤器)
无理 Java
# Java spring boot 后端 java 布隆过滤器 面试
文章目录手写SpringBoot启动器:实现布隆过滤器布隆过滤器基本概念布隆过滤器原理应用场景SpringBoot实现示例添加依赖示例代码解析总结手写SpringBoot启动器:实现布隆过滤器在大数据和高性能计算领域,布隆过滤器(BloomFilter)作为一种概率型数据结构,以其独特的空间效率和快速查询能力脱颖而出。它能够在允许一定误报率的前提下,大幅减少存储需求,特别适合于处理海量数据集中的元
MySQL高级课程:索引设计与性能优化的最佳实践
勤劳兔码农
mysql 性能优化 数据库
MySQL高级课程:索引设计与性能优化的最佳实践MySQL作为一种流行的关系型数据库管理系统,在企业级应用中被广泛使用。随着数据量的增加和业务复杂度的提升,数据库的性能成为关键问题。为了保证MySQL数据库在高并发、大数据量场景下的高效运行,索引设计与性能优化成为数据库管理的重要一环。本课程将深入探讨MySQL索引设计和性能优化的最佳实践,帮助你掌握从理论到实战的优化技巧。一、索引的基础知识1.1
【MYSQL】在MySQL中设置 max_allowed_packet、wait_timeout 和 interactive_timeout
丶2136
web 数据库 mysql 数据库 后端
目录重要配置参数临时设置参数1.使用SQL语句设置1.检查当前设置持久化设置修改配置文件在Linux上重启MySQL服务:在Windows上重启MySQL服务:注意事项示例:使用BLOB存储大数据总结解决连接断开问题的总结在处理大于1MB的数据时,MySQL数据库可能会遇到连接断开的问题。此类问题通常与几个重要的配置参数有关,包括max_allowed_packet、wait_timeout和in
《C++与新兴数据库技术的完美交互:开启高效数据处理新时代》
程序猿阿伟
c++ 数据库 开发语言
在当今快速发展的科技领域,数据库技术不断推陈出新,为数据的存储、管理和检索带来了更高效、更灵活的解决方案。而C++作为一种强大的编程语言,如何更好地与新兴的数据库技术进行交互,成为了众多开发者关注的热点问题。一、新兴数据库技术的崛起随着大数据、云计算和人工智能等技术的飞速发展,传统的关系型数据库在某些场景下已经难以满足日益增长的需求。新兴的数据库技术,如NoSQL数据库、NewSQL数据库、分布式
Spring Cloud Stream与Kafka(二)
快乐江小鱼
# spring kafka 分布式 spring cloud
SpringCloudStream与Kafka(二)文章目录SpringCloudStream与Kafka(二)SpringCloudStream提供的信道自定义Binding声明接口SpringCloudStream注解发布与订阅SpringCloudStream提供的信道Source接口packageorg.springframework.cloud.stream.messaging;impo
双十一云起实验室体验专场,七大场景,体验有礼
阿里云天池
体验场景 活动 云计算 大数据 容器 云原生
云起实验室云起实验室是阿里云为开发者打造的一站式体验学习平台,在这里你可以了解并亲自动手体验各类云产品和云计算基础,无需关注资源开通和底层产品,无需任何费用。只要有一颗想要了解云、学习云、体验云的心,这里就是你的上云第一站。场景介绍此次体验《双十一云起实验室体验专场》,涉及七大技术场景实践体验,云上实践,云上成长。\大数据计算场景《基于EMR离线数据分析》E-MapReduce(简称“EMR”)是
Linux基础入门
LIPAH
linux 运维 服务器
课程链接:黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等_哔哩哔哩_bilibili声明:该文章为本人的学习笔记,非专业教程目录声明:本文章为本人的学习笔记,非正版教程第一章概述操作系统概述硬件和软件操作系统初始LinuxLinux诞生Linux内核Linux发行版虚拟机概念VMwareWorkStatio
【选型】数据库 Mysql MariaDB 存储引擎选择
我是Superman丶
数据库 架构心得 数据库 mysql mariadb
【选型】数据库MysqlMariaDB存储引擎选择MariaDB新增十多个存储引擎,比较有特色的有:(1)Aria:适用于快速读取快速写入场景,替代为人诟病的MyISAM,支持事务,支持崩溃恢复;(2)TokuDB:适用于大数据量写入场景,支持事务,支持高压缩比,减少存储空间;(3)Spider:适用于水平分片场景,支持数据分片,将数据分布在多个服务器上;(5)DynamicComumns:支持动
kafka2.8.2集群离线安装
xiongmao0304
elk 1024程序员节 kafka
版本:Centos7、kafka_2.13-2.8.2节点:27.196.38.200kafka127.196.38.201kafka227.196.38.202kafka3基础配置在所有节点操作[root@localhost~]#systemctlstopfirewalld[root@localhost~]#systemctldisablefirewalldRemovedsymlink/etc/
(四)Kafka离线安装 - Kafka下载及安装
清风ai明月
Kafka kafka
Kafka官方下载地址:ApacheKafka这时候下载安装版本。我这里的安装目录在/usr/local/cd/usr/local/#创建目录mkdirkafkacdkafkamkdirkafka_log把下载的压缩包,放入到/usr/local/kafka/目录下,解压。#解压tar-zxvfkafka_2.12-3.8.0.tgz修改配置文件#修改配置文件cd/usr/local/kafka/
2022-05-17
爱米儿
人,有时候兴致一上来,喜欢制造惊喜。比如说吧,以前的我有时候不提前跟爸妈打招呼,直接一脚油门到家。那个时候,没有疫情,不需要提前报备。现在如果不提前告知所在社区,恐怕会被困在高速上……因为没有人接受你!所以,疫情真的让我们失去了很多:亲朋好友间的欢聚说走就走的旅行想见却不能见无处安放的理想…………疫情之下,你的行踪不再是秘密不要担心忘记自己去过哪里大数据都会帮你记得
新型冠状病毒感染肺炎防护,喝酒能杀病毒吗?板蓝根能预防感染
文娱综艺
新型冠状病毒感染肺炎,一直是大家关注新动向。从武汉地区几个病例,蔓延到全国各地,甚至国外。截止今日大数据统计:确诊新型冠状病毒感染肺炎者,11823人。疑似病例者17988人,死亡者259人,治愈人数243人。新型冠状病毒感染肺炎,还在不断扩散蔓延。感染者不断在增加趋势,国家相关部门也积极在控制疫情,研究疫情疫苗,尽快能够结束这场没有硝烟的战争。恢复正常日常生活!对于这次疫情,不少人不知道如何防患
【赵渝强老师】基于大数据组件的平台架构
赵渝强老师
大数据技术 大数据 架构
在了解了大数据各个生态圈所包含的组件及其功能特性后,就可以利用这些组件来搭建一个大数据平台从而实现数据的存储和数据的计算。下图展示了大数据平台的整体架构。 视频讲解如下:大数据平台的Lambda架构【赵渝强老师】大数据平台的Lambda架构大数据平台的Kappa架构【赵渝强老师】大数据平台的Kappa架构 大数据平台的总体架构可以分为五层,分别是:数据源层、数据采集层、大数据平台层、数据仓
kafka系列之:使用python消费kafka Topic数据
快乐骑行^_^
大数据 kafka系列 python
kafka系列之:使用python消费kafkaTopic数据一、创建kafkaConsumer三、查看分区四、查看分区信息五、查看当前消费的Topic六、获取当前消费者可消费的偏移量七、获取当前Topic最大的偏移量八、获取当前kafkatopic、分区和分区偏移量九、重置偏移量十、根据重置的偏移量消费数据十一、使用python消费kafkaTopic数据完整详细注释代码一、创建kafkaCon
Centos7离线安装Kafka+zookeeper+SASL安全认证
weixin_38683859
centos kafka
1.安装zookeeper1.下载apache-zookeeper-3.5.8-bin.tar.gz2.解压:tar–zxvfapache-zookeeper-3.5.8-bin.tar.gz3.进入到conf目录cd/opt/apache-zookeeper-3.5.8-bin/conf/4.复制配置文件cfgcpzoo_sample.cfgzoo.cfg5.修改zoo.cfg配置文件:vi/o
kafka的安装与测试
无情白
kafka 队列 java linux
kafka的安装与测试一、概念定义:kafka是一个分布式的基于发布/订阅模式的消息队列(MessageQueue),主要用于大数据实时处理领域使用消息队列的一个好处1.解耦:不需要两台服务器保持同时在线,通过消息队列处理。另外一台服务器需要的时候从消息队列中取。2.可恢复性:系统一部分组件失效的时候,不会影响到整个系统,消息列队降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消
Kafka配置文件 - server.properties
清风ai明月
Kafka kafka
我安装的kafka版本为3.8.0config目录下的配置文件server.properties基础配置修改正常安装好kafka后,只需要修改以下两个地方就可以了。1、指定服务器地址和端口#默认配置listeners=PLAINTEXT://:9092#修改如下配置,这个ip为自己服务器的ip地址listeners=PLAINTEXT://192.168.5.131:90922、指定保存kafka
使用python创建kafka的topic
百流
python笔记 python kafka 开发语言
文章目录使用python创建kafka的topickafka基本概念所需安装的包代码样例使用python创建kafka的topickafka基本概念ApacheKafka是一个开源的分布式流处理平台,设计用于处理实时数据流。它由Apache软件基金会开发,使用Scala和Java编写。#特性1.分布式:Kafka是分布式的系统,支持多分区和多副本,确保了数据的可靠性和系统的可扩展性。
[Datawhale AI 夏令营][第五期]智能识别系统-Task1笔记
keexh
人工智能 笔记
任务是发布在MARS大数据服务平台的2024“大运河杯”数据开发应用创新大赛——城市治理。了解智慧河长的朋友可能听说类似的项目,它们可以识别河道中出现的一些问题。这次的智能识别系统与前者有相似的地方,但这个系统将聚焦城市违规行为的智能检测,通过研究开发高效可靠的计算机视觉算法,提升违规行为检测识别的准确度,降低对大量人工的依赖,提升检测效果和效率,从而推动城市治理向更高效、更智能、更文明的方向发展
三防平板:定制化服务的趋势——以智慧医疗为例
livefan
电脑 人工智能 5G 科技 智慧医疗 安全 云计算
随着科技的飞速发展,三防平板产品凭借其坚固耐用、适应复杂环境的特性,在众多行业领域中崭露头角。而在AI迅速增长的今天,AI+智慧医疗成为了一个备受关注的热点,它不仅推动了医疗行业的数字化转型,也为三防平板产品的定制化服务提供了新的应用方向,使其在医疗领域大放异彩。来百度APP畅享高清图片智慧医疗,即通过智能设备、大数据、云计算等技术,实现医疗服务的数字化、智能化和个性化。在这个背景下,三防平板凭借
深度学习赋能数据分析,联蔚盘云引领业务革新
联蔚盘云
深度学习 数据分析 人工智能
一、引言随着大数据时代的到来,深度学习技术正逐渐成为企业数据分析的新引擎。联蔚盘云凭借其在深度学习领域的深厚积累,为企业提供高效、精准的数据分析解决方案,助力企业实现业务革新与增长。二、深度学习与数据分析的完美结合联蔚盘云运用深度学习技术,对海量数据进行深度挖掘,揭示数据背后的价值。我们利用先进的算法和模型,为企业提供精准的市场预测、消费者行为分析、业务优化等解决方案,帮助企业实现决策的科学化和智
小白学习大数据测试之hadoop hdfs和MapReduce小实战
大数据学习02
转发是对小编的最大支持在湿货|大数据测试之hadoop单机环境搭建(超级详细版)这个基础上,我们来运行一个官网的MapReducedemo程序来看看效果和处理过程。大致步骤如下:新建一个文件test.txt,内容为HelloHadoopHelloxiaoqiangHellotestingbangHellohttp://xqtesting.sxl.cn将test.txt上传到hdfs的根目录/usr
游卡,三七互娱,得物,顺丰,快手,oppo,莉莉丝,康冠科技,途游游戏,埃科光电25秋招内推
weixin_53585422
c++ java 算法 python 运维 大数据 技术美术
游卡,三七互娱,得物,顺丰,快手,oppo,莉莉丝,康冠科技,途游游戏,埃科光电25秋招内推①顺丰【招聘岗位】研发、算法、大数据、产品、项管、设计、人资等【官方内推码】4FOLXH【一键内推】https://sourl.cn/UzbDat②游卡【岗位】程序技术、产品策划、美术、发型运营、职能综合、桌游业务等大类【一键内推】https://sourl.cn/PHiZZE【内推码】DSymte2c③得
联发科Wi-Fi7基带芯片MT7996AV和收发芯片MT7977AN工艺全景图
Victor-Tian
WIFI ai 功能测试 大数据 人工智能
芯品快报:亚德诺(ADI)超静音步进电机驱动芯片——TMC2209芯品快报:德州仪器(TI)的高性能、集成式的双全桥电机驱动器——DRV8412IPBrain小组集成电路大数据平台2024年07月11日19:08北京标题已修改Wi-Fi芯片的应用场景主要分为三种:1、智能手机、平板和电视;2、物联网IoT场景;3、路由器。市场格局在智能手机领域,Wi-Fi芯片主要被三巨头高通、联发科和博通所占据;
mongodb3.03开启认证
21jhf
mongodb
下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略)
Windows下我做了一个bat文件,用来启动mongodb,命令行如下:
mongod --dbpath db\data --port 27017 --directoryperdb --logp
【Spark103】Task not serializable
bit1129
Serializable
Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法
1.
package spark.exampl
你所熟知的 LRU(最近最少使用)
dalan_123
java
关于LRU这个名词在很多地方或听说,或使用,接下来看下lru缓存回收的实现
1、大体的想法
a、查询出最近最晚使用的项
b、给最近的使用的项做标记
通过使用链表就可以完成这两个操作,关于最近最少使用的项只需要返回链表的尾部;标记最近使用的项,只需要将该项移除并放置到头部,那么难点就出现 你如何能够快速在链表定位对应的该项?
这时候多
Javascript 跨域
周凡杨
JavaScript jsonp 跨域 cross-domain
 
linux下安装apache服务器
g21121
apache
安装apache
下载windows版本apache,下载地址:http://httpd.apache.org/download.cgi
1.windows下安装apache
Windows下安装apache比较简单,注意选择路径和端口即可,这里就不再赘述了。 2.linux下安装apache:
下载之后上传到linux的相关目录,这里指定为/home/apach
FineReport的JS编辑框和URL地址栏语法简介
老A不折腾
finereport web报表 报表软件 语法总结
JS编辑框:
1.FineReport的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FineReport中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的fun
根据STATUS信息对MySQL进行优化
墙头上一根草
status
mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为:
show processlist 命令
mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab
我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名
aijuans
Spring 3
本文介绍如何给Spring的Bean配置文件的Bean定义别名?
原始的
<bean id="business" class="onlyfun.caterpillar.device.Business">
<property name="writer">
<ref b
高性能mysql 之 性能剖析
annan211
性能 mysql mysql 性能剖析 剖析
1 定义性能优化
mysql服务器性能,此处定义为 响应时间。
在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。
这是一个陷阱。
资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现
编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不
主外键和索引唯一性约束
百合不是茶
索引 唯一性约束 主外键约束 联机删除
目标;第一步;创建两张表 用户表和文章表
第二步;发表文章
1,建表;
---用户表 BlogUsers
--userID唯一的
--userName
--pwd
--sex
create
线程的调度
bijian1013
java 多线程 thread 线程的调度 java多线程
1. Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。
2. 多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商)
a) 
查看日志常用命令
bijian1013
linux 命令 unix
一.日志查找方法,可以用通配符查某台主机上的所有服务器grep "关键字" /wls/applogs/custom-*/error.log
二.查看日志常用命令1.grep '关键字' error.log:在error.log中搜索'关键字'2.grep -C10 '关键字' error.log:显示关键字前后10行记录3.grep '关键字' error.l
【持久化框架MyBatis3一】MyBatis版HelloWorld
bit1129
helloworld
MyBatis这个系列的文章,主要参考《Java Persistence with MyBatis 3》。
样例数据
本文以MySQL数据库为例,建立一个STUDENTS表,插入两条数据,然后进行单表的增删改查
CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
【Hadoop十五】Hadoop Counter
bit1129
hadoop
1. 只有Map任务的Map Reduce Job
File System Counters
FILE: Number of bytes read=3629530
FILE: Number of bytes written=98312
FILE: Number of read operations=0
FILE: Number of lar
解决Tomcat数据连接池无法释放
ronin47
tomcat 连接池 优化
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。
今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。
简单分析了一
java-75-二叉树两结点的最低共同父结点
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import ljn.help.*;
public class BTreeLowestParentOfTwoNodes {
public static void main(String[] args) {
/*
* node data is stored in
行业垂直搜索引擎网页抓取项目
carlwu
Lucene Nutch Heritrix Solr
公司有一个搜索引擎项目,希望各路高人有空来帮忙指导,谢谢!
这是详细需求:
(1) 通过提供的网站地址(大概100-200个网站),网页抓取程序能不断抓取网页和其它类型的文件(如Excel、PDF、Word、ppt及zip类型),并且程序能够根据事先提供的规则,过滤掉不相干的下载内容。
(2) 程序能够搜索这些抓取的内容,并能对这些抓取文件按照油田名进行分类,然后放到服务器不同的目录中。
[通讯与服务]在总带宽资源没有大幅增加之前,不适宜大幅度降低资费
comsci
资源
降低通讯服务资费,就意味着有更多的用户进入,就意味着通讯服务提供商要接待和服务更多的用户,在总体运维成本没有由于技术升级而大幅下降的情况下,这种降低资费的行为将导致每个用户的平均带宽不断下降,而享受到的服务质量也在下降,这对用户和服务商都是不利的。。。。。。。。
&nbs
Java时区转换及时间格式
Cwind
java
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。
问题描述:
向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。
readonly,只读,不可用
dashuaifu
js jsp disable readOnly readOnly
readOnly 和 readonly 不同,在做js开发时一定要注意函数大小写和jsp黄线的警告!!!我就经历过这么一件事:
使用readOnly在某些浏览器或同一浏览器不同版本有的可以实现“只读”功能,有的就不行,而且函数readOnly有黄线警告!!!就这样被折磨了不短时间!!!(期间使用过disable函数,但是发现disable函数之后后台接收不到前台的的数据!!!)
LABjs、RequireJS、SeaJS 介绍
dcj3sjt126com
js Web
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更
[应用结构]入口脚本
dcj3sjt126com
PHP yii2
入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。
Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。
控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文
haoop shell命令
eksliang
hadoop hadoop shell
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal
cp
du
dus
expunge
get
getmerge
ls
lsr
mkdir
movefromLocal
mv
put
rm
rmr
setrep
stat
tail
test
text
MultiStateView不同的状态下显示不同的界面
gundumw100
android
只要将指定的view放在该控件里面,可以该view在不同的状态下显示不同的界面,这对ListView很有用,比如加载界面,空白界面,错误界面。而且这些见面由你指定布局,非常灵活。
PS:ListView虽然可以设置一个EmptyView,但使用起来不方便,不灵活,有点累赘。
<com.kennyc.view.MultiStateView xmlns:android=&qu
jQuery实现页面内锚点平滑跳转
ini
JavaScript html jquery html5 css
平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htmHTML文件代码:
&
kafka offset迁移
kane_xie
kafka
在早前的kafka版本中(0.8.0),offset是被存储在zookeeper中的。
到当前版本(0.8.2)为止,kafka同时支持offset存储在zookeeper和offset manager(broker)中。
从官方的说明来看,未来offset的zookeeper存储将会被弃用。因此现有的基于kafka的项目如果今后计划保持更新的话,可以考虑在合适
android > 搭建 cordova 环境
mft8899
android
1 , 安装 node.js
http://nodejs.org
node -v 查看版本
2, 安装 npm
可以先从 https://github.com/isaacs/npm/tags 下载 源码 解压到
java封装的比较器,比较是否全相同,获取不同字段名字
qifeifei
非常实用的java比较器,贴上代码:
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
i
记录一些函数用法
.Aky.
位运算 PHP 数据库 函数 IP
高手们照旧忽略。
想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧)
当然用到了ip2long()函数把字符串转为整型数
sublime text 3 rust
wudixiaotie
Sublime Text
1.sublime text 3 => install package => Rust
2.cd ~/.config/sublime-text-3/Packages
3.mkdir rust
4.git clone https://github.com/sp0/rust-style
5.cd rust-style
6.cargo build --release
7.ctrl