Redis+Hbase+RocketMQ 实际使用问题案例分享

需求

  1. 将Hbase数据,解析后推送到RocketMQ。
  2. redis使用list数据类型,存储了需要推送的数据的RowKey及表名。

简单画个流程图就是:

分析及确定方案

Redis

  1. 明确list中元素结构{"rowkey":rowkey,"table":table}解析出rowkey;
  2. 一次取多个元素加快效率;
  3. 取了之后放入重试队列,并删除原来的元素;
  4. 处理数据永远是重试队列里的,成功之后删除,失败就加上重试次数并重新放回;
  5. 明确从list中取值所使用的redis命令;范围获取LRANGE;范围删除(留下指定范围的数据)LTRIM;判断list长度LLEN;加入listRPUSH;删除LREM等等;
  6. 从Hbase获取数据失败和发送到mq失败都令重试次数加一;
  7. 每次碰到重试次数不为0的数据都休眠1s;
  8. 设置最大重试次数,达到限制后丢弃;
  9. 考虑客户redis部署方式,单机、主从、集群、哨兵等;
  10. 选择合适的客户端,Jedis、Redisson、Lettuce等;
  11. 编写不同的操作代码,也可以利用配置文件、环境变量、工厂模式等适配各种部署模式;

Hbase

  1. 基本理论知识学习(原来没接触过),rowkey是没条数据的主键,限定符是字段名,列族是多个限定名的集合等;当时看这个觉得不错http://juejin.cn/post/6844903797655863309
  2. 因为是不停读取数据、链接、Table不用close,可以缓存起来,没必要每次都创建;
  3. 确定批量获取数据方式为批量Get,没用scan
  4. 了解解析方式,一些网上的解析试了之后会乱码,这边用的是它自带的CellUtil.clone相关方法;
  5. 考虑所有都没数据时休眠10s;

RocketMQ

  1. 有现成的发送代码,公司封装好的;
  2. 调整发送的速度、太快了服务端会吃不消(获取Hbase数据速度太快了,最开始没限制一会儿就入了百万数据),设置超时时间(默认3s);
  3. 调整服务端的内存、线程数等参数;

实现

配置

#server configuration
server.port=8896
#log config
logging.file.path=./logs
#redis-standalone
redis.standalone.host=
redis.standalone.port=6379
redis.standalone.password=
redis.standalone.enable=true
#redis-cluster
redis.cluster.nodes=
redis.cluster.password=
redis.cluster.timeout=30000
redis.cluster.enable=false
# Zookeeper 集群地址,逗号分隔
hbase.zookeeper.quorum=
# Zookeeper 端口
hbase.zookeeper.property.clientPort=2181
# 消息目的rocketmq地址
rocketmq.server.host=
# 发送消息间隔时间,防止发送过快mq受不了
rocketmq.send.interval.millisec=10
# 每次从redis读取数据量限制。
data.access.redisDataSize=100
# 失败数据重试次数,超过的直接丢弃
data.access.retryNum=10
# 需要接入的表,需要发送到rocketmq的topic和在redis中的key的映射。xxx.xxx.xxx[topic]=redisKey
data.access.topicKeyMap[weibo_hbase]=data:sync:notice:suanzi:weibo:back
data.access.topicKeyMap[wechat_hbase]=data:sync:notice:suanzi:wechat:back

部分代码

获取配置,其余的直接@Value("${}")

@Setter
@Getter
@Configuration
@ConfigurationProperties(prefix = "data.access")
public class AccessRedisMqConfig {

    /**
     * key:topic; value:redis的key
     */
    private Map<String, String> topicKeyMap = new HashMap<>();

    /**
     * 一次从redis中读取数据量限制
     */
    private long redisDataSize = 50;

    /**
     * 失败数据重试次数
     */
    private int retryNum = 10;

}

开启接入:

@Component
public class AdapterRunner implements ApplicationRunner {

    @Resource
    private DataAccessService dataAccessService;

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("项目已启动,开始接入数据到RocketMQ……");
        dataAccessService.accessData2Mq();
    }
}

其他代码其实也在分析里了。

踩坑

  1. mq发送问题
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: invokeAsync call timeout
	at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeAsync(NettyRemotingClient.java:525)
	at org.apache.rocketmq.client.impl.MQClientAPIImpl.sendMessageAsync(MQClientAPIImpl.java:523)
	at org.apache.rocketmq.client.impl.MQClientAPIImpl.onExceptionImpl(MQClientAPIImpl.java:610)
	at org.apache.rocketmq.client.impl.MQClientAPIImpl.access$100(MQClientAPIImpl.java:167)
	at org.apache.rocketmq.client.impl.MQClientAPIImpl$1.operationComplete(MQClientAPIImpl.java:572)
	at org.apache.rocketmq.remoting.netty.ResponseFuture.executeInvokeCallback(ResponseFuture.java:54)
	at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract$2.run(NettyRemotingAbstract.java:319)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

上面分析也说了,注意发送速度,有多少资源就接入多快。还有注意相关三个端口是否开放。

总结

程序很简单,主要涉及方案的是,获取redis的list数据时,是考虑效率,及加入重试策略,保证数据不丢失等。

作者: letscrazy

出处: http://www.cnblogs.com/letscrazy/

关于作者:letscrazy

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(licz163@163.com)咨询.

本文转载于网络 如有侵权请联系删除

相关文章

  • 2022-04微软漏洞通告

    微软官方发布了2022年04月的安全更新。本月更新公布了145个漏洞,包含47个远程执行代码漏洞、55个特权提升漏洞、13个信息泄露漏洞、9个拒绝服务漏洞以及4个身份假冒漏洞,其中10个漏洞级别为“Critical”(高危),115个为“Important”(严重)。建议用户及时使用火绒安全软件(个人/企业)【漏洞修复】功能更新补丁。01涉及组件.NETFrameworkActiveDirectoryDomainServicesAzureSDKAzureSiteRecoveryLDAP-LIGHTWEIGHTDIRECTORYACCESSPROTOCOLMicrosoftBluetoothdriverMicrosoftDynamicsMicrosoftEdge(basedonChromium)MicrosoftGraphicsComponentMicrosoftLocalSecurityAuthenticationServer(lsasrv)MicrosoftOfficeExcelMicrosoftOfficeSharePointMicrosoftWindowsALPCMicrosof

  • SpringBoot官方为什么采用这个数据库连接池?史上最快?

    前言现在已经有很多公司在使用HikariCP了,HikariCP还成为了SpringBoot默认的连接池,伴随着SpringBoot和微服务,HikariCP必将迎来广泛的普及。下面陈某带大家从源码角度分析一下HikariCP为什么能够被SpringBoot青睐,文章目录如下:目录零、类图和流程图开始前先来了解下HikariCP获取一个连接时类间的交互流程,方便下面详细流程的阅读。获取连接时的类间交互:图1一、主流程1:获取连接流程HikariCP获取连接时的入口是HikariDataSource里的getConnection方法,现在来看下该方法的具体流程:主流程1上述为HikariCP获取连接时的流程图,由图1可知,每个datasource对象里都会持有一个HikariPool对象,记为pool,初始化后的datasource对象pool是空的,所以第一次getConnection的时候会进行实例化pool属性(参考主流程1),初始化的时候需要将当前datasource里的config属性传过去,用于pool的初始化,最终标记sealed,然后根据pool对象调用getConnec

  • Android编程实现全局获取Context及使用Intent传递对象的方法详解

    本文实例讲述了Android编程实现全局获取Context及使用Intent传递对象的方法。分享给大家供大家参考,具体如下:一、全局获取ContextAndroid开发中很多地方需要用到Context,比如弹出Toast、启动活动、发送广播、操作数据库……由于很多操作都是在活动中进行的,而活动本身就是一个Context对象,所以获取Context并不是那么困难。但是,当应用程序的架构逐渐开始复杂起来的时候,很多的逻辑代码都将脱离Activity类,由此在某些情况下,获取Context并非那么容易。Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。而我们可以定制一个自己的Application类,以便管理程序内一些全局的状态信息,比如说全局Context。publicclassMyApplicationextendsApplication{ privatestaticContextcontext; @Override publicvoidonCreate(){ super.onCreate(); context=getApplica

  • 用Python分析广州房地产市场

    作者:朱小五来源:凹凸数据大家好,我是交流群二群的J哥。这次我想结合房地产业务,针对广州这一城市,运用Python来进行数据分析,以期能为大家提供一点分析思路。我们为什么要分析房地产市场?房地产行业具有鲜明的地域特征,从房地产企业角度来讲,城市的选择在一定程度上决定了投资的成败。因此,对一个城市的市场研判就显得至关重要。早在几年前,同样的资金配置到南京和长沙两个城市,获得的投资回报差别是巨大的。那么,我们该如何分析房地产市场?我从数据分析的角度,归纳梳理了一下思路,我认为一个城市的房地产市场分析应该包括城市经济、相关政策、土地市场和房产市场四个方面。城市经济反映了一个城市的经济实力和潜能,可以细分出以下几个指标:人均GDP和单位面积GDP、人均财政收入和单位面积财政收入、高净值人群规模、人口净流入、第三产业占比、产业互补、房地产投资依赖度、城市友好度等。政府制定的政策对房地产市场影响也是巨大的,相关性较高的政策有金融政策、人口政策、土地政策和购房政策等。最后就是城市土地市场和房产市场分析,这也是整个分析最核心的部分。接下来,我将结合Python,以广州为例,尝试着分析广州的土地市场和房

  • Docker 双栈日志

    本文来聊聊Docker双栈日志,看看这个方案解决了我们实际应用中的哪些痛点,以及如何落地使用。1容器日志收集在生产环境中使用Docker或Kubernetes,甚至是非容器环境,日志管理都是个非常重要的部分。对于日志的管理,主要涉及以下几个方面:日志收集聚合解析存储分析搜索归档最终目标都是我们可以通过日志来及时的发现异常,或排查故障,同时也可以通过日志来分析当前的应用程序或者基础架构是否运行正常,是否有需要改进的地方等。本篇的重点在于日志收集,目前主要有以下几种解决方案,简单聊聊。1.1应用直接写日志中心最简单,也是应用容器化改造中最省心省力的一种。应用程序直接将日志写入远端的日志中心。这种方案的好处在于只要基础设施跟得上,应用容器化改造或者服务迁移之类的基本不涉及日志改造之类的问题。但使用这种方式的话,有几个显著的缺点:使用远端日志中心,在日志量大的时候,I/O很容易成为一个瓶颈,不过现在基本都是万兆卡,也可以通过加代理之类的来解决;应用层需要格外注意当远端日志中心写入失败,或是日志中心失联的情况,要如何处理这个异常。切不可因为写日志而影响业务;如果是为了应对前面提到的这种远端日志中

  • 美团面试官:你说你们公司的Mybatis分页插件是你写的,给我说说它的设计原理?

    来源:http://my.oschina.net/zudajun大多数框架,都支持插件,用户可通过编写插件来自行扩展功能,Mybatis也不例外。我们从插件配置、插件编写、插件运行原理、插件注册与执行拦截的时机、初始化插件、分页插件的原理等六个方面展开阐述。#插件配置Mybatis的插件配置在configuration内部,初始化时,会读取这些插件,保存于Configuration对象的InterceptorChain中。<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <plugins> <plugininterceptor="com.mybatis3.intercepto

  • 6张图说清楚Tomcat原理及请求流程

    前言很多东西在时序图中体现的已经非常清楚了,没有必要再一步一步的作介绍,本文以图为主,然后对部分内容加以简单解释。绘制图形使用的工具是PlantUML+VisualStudioCode+PlantUMLExtension本文对Tomcat的介绍以Tomcat-9.0.0.M22为标准。Tomcat-9.0.0.M22是Tomcat目前最新的版本,但尚未发布,它实现了Servlet4.0及JSP2.3并提供了很多新特性,需要1.8及以上的JDK支持等等,详情请查阅Tomcat-9.0-docOverviewConnectorInitandStartRequtstProcessAcceptorPollerWorkerContainerAtlastOverviewConnector启动以后会启动一组线程用于不同阶段的请求处理过程。Acceptor线程组。用于接受新连接,并将新连接封装一下,选择一个Poller将新连接添加到Poller的事件队列中。Poller线程组。用于监听Socket事件,当Socket可读或可写等等时,将Socket封装一下添加到worker线程池的任务队列中。work

  • S4HANA 1709版本中最新的增值税本土化解决方案

    为了应对营改增在全行业的全面推开,为了帮助SAP客户有效且合规的管理增值税发票业务,SAP研究院中国财务本地化团队于2017年2月发布了中国增值税发票管理解决方案金税直连与电子发票模块。该方案不仅大大提升了纸质发票的开票效率,并且满足了开具电子发票的新需求。经过半年多的努力,中国财务本地化团队本周隆重发布“中国增值税发票管理解决方案——进项发票管理模块”。进项发票管理模块将发票处理与采购及财务流程集成,帮助企业全面管控进项发票数据,及时了解发票状态,正确完成认证抵扣等涉税业务。▲进项发票管理主要流程及相关FioriApps进项发票管理的主要功能包括:进项发票数据台帐批量导入或手工创建发票数据,建立发票台帐。根据用户权限提供各种不同维度的查询与操作。360度展现包括金税信息,采购信息,财务信息,流程状态信息及进项抵扣等各种发票相关信息。进项发票生命周期管理为企业采购和财务用户提供适合的Fiori应用管理发票的生命周期。将发票处理流程与现有流程整合,将发票数据与SAP采购及财务凭证关联,提供双向对应关系查询。支持最新认证方式支持最新的进项发票网上确认。自动建议发票确认清单,自动生成批量确认

  • SAE 搭建 WordPress

    WordPress,是国外一款使用PHP语言开发的开源博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设自己的博客站点,也可以把WordPress当作一个内容管理系统(CMS)来使用。WordPress是一个免费的开源项目,在GNU通用公共许可证下授权发布,可以用于商业目的,前提是也开放源代码,其中文网站见 cn.wordpressWordPressstartedin2003withasinglebitofcodetoenhancethetypographyofeverydaywritingandwithfewerusersthanyoucancountonyourfingersandtoes.Sincethenithasgrowntobethelargestself-hostedbloggingtoolintheworld,usedonmillionsofsitesandseenbytensofmillionsofpeopleeveryday.Everythingyouseehere,fromthedocumentationtothecodeitself,wascreat

  • iOS布局之AutoresizingMask和AutoLayout

    关于iOS的布局主要有两种方式,分别是AutoResizing和AutoLayout。其中AutoResizing作为一种旧的布局方式,在AutoLayout被推广之后已经很少被使用。为了更加清晰的了解iOS的布局方式,本篇针对于这两种布局方法进行简要的总结。一.AutoResizing我们在使用AutoResizing进行布局的时候,其主要思想就是设置子视图跟随父视图的frame变化而变化。具体的情况,我们可以设置左跟随,右跟随等等。下面是AutoResizing在代码中的使用。//父视图 UIView*superView=[[UIViewalloc]initWithFrame:CGRectMake(0,0,100,100)]; superView.backgroundColor=[UIColororangeColor]; [self.viewaddSubview:superView]; //子视图 UIView*subView=[[UIViewalloc]initWithFrame:CGRectMake(0,0,100,100)]; subView.backgroundColor=

  • select元素的options.add 与 insertbefore的区别

    之前提到如果想改变元素的视觉效果(checkbox.checked=true会打钩),请在把元素添加到页面上再为其赋值,否则赋值无效。下拉框元素也有这样的问题,比如在设置其selectedIndex属性时,会看到当前被选中的Item,浏览器重新绘画了这个元素。在某些情况下会出现这样的情况:用insertBefore方法添加了多个选项后,设置其selectedIndex不能起到效果,用options.add则不会。他们到底有什么区别呢? 测试代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head>     <title>Untitled Page</title> &

  • 除了比特币,区块链技术能做的还有很多

    加密数字货币的世界是复杂的。尽管近年来,往里投钱变得更容易了,其背后的技术却越来越复杂。虽然这些技术可能会把你搞得晕头转向,但你总会明白,这其实是一件好事。无论你是想要投资比特币,还是以太币等其他类似币种,亦或你只是单纯对区块链这个技术很感兴趣,看完这篇文章,你就会对加密货币世界的核心问题:区块链是什么?有一个基本的认识。所谓“创世区块”这项技术的初次研究,始于90年代初,源自一篇题为《如何对数字文件进行时间戳记》的论文。“这是一个基本的想法,关于区块链最后会变成什么样子,但它也是一个开始,它将衍生出价值数千亿美元的产业,并能很好地重塑我们数字社会运作的方方面面。”单纯将区块链技术与比特币等加密货币捆绑在一起是不对的,它本质上来讲属于加密技术的范畴,只是较多地伴随着数字货币出现而已。区块链利用数学保证技术使记录合法化,确保它的真实性。区块链是由这些记录组成的一个不断增长的链,或者是“块”,只允许通过一条确认过的路径返回原来的块,对修改和篡改有很大的抵抗力。这条链从“创世区块”(GenesisBlock)开始,也就是链上的第一个记录,并持续接入完整的区块。每一个区块都通过使用加密散列指针

  • Redis常用命令整理

    doc环境下使用命令:   keys命令    ?  匹配一个字符    *  匹配任意个(包括0个)字符    []  匹配括号间的任一个字符,可以使用"-"符号表示一个范围,如a[b-d]可以匹配"ab","ac","ad"    \x  匹配字符x,用于转义符号,如果要匹配"?"就需要使用\?   判断一个键值是否存在    existskey    如果存在,返回整数类型1,否则返回0   删除键    delkey[key.....]    可以删除一个或多个键,返回值是删除的键的个数    注意:不支持通配符删除   获得键值的数据类型    typekey    返回值可能是string(字符串类型)hash(散列类型)list(列表类型)set(集合类型)zset(有序集合类型)   赋值与取值    setkeyvalue   赋值    getkey        取值   递增数字    incrkey    当存储的字符串是整数形式时,redis提供了一个使用的命

  • 在小ram和小容量硬盘的vps上的折腾

    这次被拿来折腾的是hax的免费vps,纯ipv6,7天有效期,可无限续期,但是配置也低的可怜,只有450m的运行内存,127m的swap,硬盘总共就只有5g,一开始想装Debian11,就选了Debian11之后让它rebuildvps了提交rebuild之后它说要等10分钟但是我等很久,xshell那边都无法使用ssh连接到vps,也无法ping通之后我就查看vps的vnc信息,准备拿vnc连上去看看是什么情况目前hax好像没有提供vnc的web客户端,只能自己另找vnc客户端来连接,不过公有云给的vnc跟我们自己在机子上面搭建的vncserver虽然都是vnc,但它们对vps的控制能力完全不是一个级别的,因为厂商给的vnc,它的vncserver是建在宿主机上面的,我们连是能直接连到他们宿主机上面跑我们vps用的虚拟机软件上边(一般是qemu/kvm),所以能对vps进行一些底层的操作,也能看到vps启动的全程,而我们自己搭建在vps上的vnc,跟ssh没啥很大不同,都是要等到机子正常启动之后才能连接并控制,也有可能因为种种原因,进程被干掉之后就连不上了,所以厂商给的vps一般是给

  • 2022,数据科学与数据治理项目全纪录

    大家好,我是独孤风。 2022年已过去一半多的时间了。这半年多,我们重点关注了LinkedInDatahub、Atlas等元数据管理工具,了解了他们在数据治理领域的作用。 也关注了ApacheGriffin等数据质量工具的使用。 但是,在数据工程领域这只是冰山一角,近期lakeFS高级工程师EinatOrr发布一份2022年的数据工程汇总图,对于数据工程领域的优秀项目进行了整理汇总。 此高清大图我已经同步到学习群中,需要此高清大图的同学可以联系我获取。 下面我们来看一下,大数据和数据治理领域有哪些值得关注的优质项目。 1、数据采集软件 这一部分主要是数据采集的实时流技术和软件服务。 值得关注的是Airbyte,Airbyte成立于2020年,是一个开源项目。 附上地址:https://github.com/airbytehq/airbyte Airbyte是一个开源EL(T)平台,可帮助您在数据仓库、数据湖和数据库中复制数据。 2、数据采集框架 数据采集领域越来越向高扩展性的实时流计算演变。 毫无疑问,除了商用的软件以外,Spark、Flink、Kafka、Pulsar等开源技术将

  • 基于kerberos的hadoop安全集群搭建

    目录前置条件kerberos相关给hadoop各组件创建kerberos账号将这些账号做成keytabcore-site.xmlHDFSdatanode的安全配置证书生成和安装hdfs-site.xml的重点配置ssl-client.xml和ssl-server.xml配置yarncontainer-executorbuildLinuxContainerExecutor配置container-executor.cfg文件权限修改mapreduce启动参考资料 上一份工作主要负责大数据平台的建设,在这个过程中积累了一些Hadoop生态组件的搭建和使用笔记,由于时间关系,不打算去修改其中的错别字和排版问题,直接释出原始笔记。 前置条件 我所在的集群有三台服务其,对应的host分别为master,slave1,slave2。hadoop服务的安装分部为 机器host 组件情况 master namenode、datanode、journalnode、resourcemanager、nodemanager、jobhistoryserver slave1 namenode、

  • [LOJ 2146][BZOJ 4873][Shoi2017]寿司餐厅

    [LOJ2146][BZOJ4873][Shoi2017]寿司餐厅 题意 比较复杂放LOJ题面好了qaq... Kiana最近喜欢到一家非常美味的寿司餐厅用餐。 每天晚上,这家餐厅都会按顺序提供\(n\)种寿司,第\(i\)种寿司有一个代号\(a_i\)和美味度\(d_{i,i}\),不同种类的寿司有可能使用相同的代号。每种寿司的份数都是无限的,Kiana也可以无限次取寿司来吃,但每种寿司每次只能取一份,且每次取走的寿司必须是按餐厅提供寿司的顺序连续的一段,即Kiana可以一次取走第\(1,2\)种寿司各一份,也可以一次取走第\(2,3\)种寿司各一份,但不可以一次取走第\(1,3\)种寿司。 由于餐厅提供的寿司种类繁多,而不同种类的寿司之间相互会有影响:三文鱼寿司和鱿鱼寿司一起吃或许会很棒,但和水果寿司一起吃就可能会肚子痛。因此,Kiana定义了一个综合美味度\(d_{i,j}\(i<j)\),表示在一次取的寿司中,如果包含了餐厅提供的从第\(i\)份到第\(j\)份的所有寿司,吃掉这次取的所有寿司后将获得的额外美味度。由于取寿司需要花费一些时间,所以我们认为分两次取来的寿司

  • 更改容器内时区

    更改容器时区 以etcd为例 得到容器ID [root@node41yaml]#dockerps|grepetcd|awk-F'''{print$1}' aede28960ccd [root@node41yaml]# 复制 创建对应的时区路径 [root@node41yaml]#dockerexec-itaede28960ccdsh-c'mkdir-p/usr/share/zoneinfo/Asia/' 复制 拷贝时区文件 [root@node41yaml]#dockercp/usr/share/zoneinfo/Asia/Shanghaiaede28960ccd:/usr/share/zoneinfo/Asia/Shanghai 复制 创建链接 [root@node41yaml]#dockerexec-itaede28960ccdsh-c'ln-s/usr/share/zoneinfo/Asia/Shanghai/etc/localtime' 复制 查看时间 [root@node41yaml]#dockerexec-itaede28960ccdsh-c'date' FriAug916

  • RuntimeError: NCCL error in:/torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1248, unhandled system error, NCCL version 2.12.10

    在NGC集群使用https://github.com/pytorch/examples/blob/main/imagenet/main.py跑ImageNet分布式训练,运行命令是 pythonmain.py--dist-url'tcp://127.0.0.1:8888'--dist-backend'nccl'--multiprocessing-distributed--world-size1--rank0--data/mount/imagenet/ImageNet2012/ImageNet2012--epochs200-aresnet50 复制 但是报错,信息如下 File"/code/hyperbox_app/hyperbox_app/distributed/finetune_masks/finetune_imagenet.py",line188,inmain_worker model=torch.nn.parallel.DistributedDataParallel(model,device_ids=[args.gpu]) File"/opt/conda/lib/python3.

  • 数据库系列之了解数据库(一)

    什么是数据库: 从SQL的角度来看,数据库是一个以某种有组织的方式存储的数据集合。 什么是表: 表是一种结构化的文件, 可用来存储某种特定类型的数据, 存储在表中的数据是同一类型的数据或者是清单, 每个表都有一个名字来标识自己, 这个名字是唯一的,也就是说数据库中没有其他表具有相同的名字。 什么是列: 表示由列构成。 列存储表中某部分的信息。 列是表中的一个字段,所有表都是由一个或者多个列构成。 什么是行: 表中的数据都是按行来存放的。 所保存的每个记录存储在自己的行内。 行是表中的一条记录。 什么是主键: 表中每一行都有一列(或者几列)可以唯一标识自己。 例如:顾客表可以使用顾客编号 而订单表可以使用订单ID。 其值能够唯一标识表中的每一行。 他要满足一下要求: 任意两行都不具有相同的主键值 每一行都必须有一个主键值(不允许为空) 主键值不能重用(如果某行从表中删除,它的主键不能赋值给以后的新行) 什么是SQL: 是一种专门用来与数据库沟通的语言。

  • nacos实战入门

    https://blog.csdn.net/Hedeghog_cyy/article/details/118555486

相关推荐

推荐阅读