thrift

Python program to connect to HBase via thrift server in Http mode

孤街醉人 提交于 2021-02-08 13:10:15
问题 I am trying to write a simple program to connect to HBase server through thrift which is started in Http mode.(cluster is kerberized ) but I always gets 'read zero bytes error message' I have refered below links but those examples work only if the thrift server starts in Binary mode (??) https://github.com/joshelser/hbase-thrift1-python-sasl/blob/master/get_row.py, I did Klist and Kinit everything looks fine and also I have followed below HDP documentation and my setup is correct https:/

记一次内存溢出的分析经历

百般思念 提交于 2021-02-04 03:23:00
说在前面的话 朋友,你经历过部署好的服务突然内存溢出吗? 你经历过没有看过Java虚拟机,来解决内存溢出的痛苦吗? 你经历过一个BUG,百思不得其解,头发一根一根脱落的烦恼吗? 我知道,你有过! 但是我还是要来说说我的故事.................. 背景: 有一个项目做一个系统,分客户端和服务端,客户端用c++写的,用来收集信息然后传给服务端(客户端的数量还是比较多的,正常的有几千个), 服务端用Java写的(带管理页面),属于RPC模式,中间的通信框架使用的是thrift。 thrift很多优点就不多说了,它是facebook的开源的rpc框架,主要是它能够跨语言,序列化速度快,但是他有个不讨喜的地方就是它必须用自己IDL来定义接口 thrift版本:0.9.2. 问题定位与分析 步骤一.初步分析 客户端无法连接服务端,查看服务器的端口开启状况,服务端口并没有开启。于是启动服务端,启动几秒后,服务端崩溃,重复启动,服务端依旧在启动几秒后崩溃。 步骤二.查看服务端日志分析 分析得知是因为java.lang.OutOfMemoryError: Java heap space(堆内存溢出)导致的服务崩溃。 客户端搜集的主机信息,主机策略都是放在缓存中,可能是因为缓存较大造成的,但是通过日志可以看出是因为Thrift服务抛出的堆内存溢出异常与缓存大小无关。 步骤三

Is safe to rename a field in Thrift IDL?

。_饼干妹妹 提交于 2021-01-29 09:18:16
问题 Is it safe to deprecate a field in Thrift by renaming if the field is no longer used by clients? My understanding is this should work as long as we don't change the type. For example From struct FooResponse { 1: optional i32 foo } To struct FooResponse { 1: optional i32 fooDeprecated } 回答1: Yes it is 100% safe. Thrift only deals with field IDs internally. The names of a struct as well as method argument names are used to generate field names in the generated code only. They do not even go

Is safe to rename a field in Thrift IDL?

余生长醉 提交于 2021-01-29 09:06:58
问题 Is it safe to deprecate a field in Thrift by renaming if the field is no longer used by clients? My understanding is this should work as long as we don't change the type. For example From struct FooResponse { 1: optional i32 foo } To struct FooResponse { 1: optional i32 fooDeprecated } 回答1: Yes it is 100% safe. Thrift only deals with field IDs internally. The names of a struct as well as method argument names are used to generate field names in the generated code only. They do not even go

CMake Difference between include_directories and add_subdirectory?

守給你的承諾、 提交于 2021-01-20 15:49:08
问题 I'm learning CMake for building C++ code, and struggling with the following concept. On my root level directory I have some cpp files and a CMakeLists.txt that succesfully generates some thrift code in a gen-cpp directory. My root level CMakeLists.txt contains : include_directories("path-to-root"/gen-cpp). (along with the relevant thrift auto-generating and includes. Everything compiles ok but I get run time dynamic library linked errors for undefined symbol referencing a class defined in the

Java微服务选型Dubbo V.S SpringCloud

烈酒焚心 提交于 2021-01-20 03:07:09
点击上方“ JavaEdge ”,关注公众号 设为“ 星标 ”,好文章不错过! RPC框架主要组成 通信框架 通信协议 序列化和反序列化格式 1 分类 RPC框架主要分为: 1.1 绑定语言平台 1.1.1 Dubbo 国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持Java 架构 Consumer 服务消费者 Provider 服务提供者 Registry 注册中心 Monitor是监控系统 交互流程 Consumer 通过 Registry 获取到 Provider 节点 再通过Dubbo的客户端SDK与Provider建立连接,并发起调用 Provider 通过Dubbo的服务端SDK接收到 Consumer 请求 处理后再把结果返回给Consumer 服务消费者、提供者都需引入Dubbo的SDK才来完成RPC调用,因为Dubbo是用Java实现,所以要求服务消费者、提供者也都必须用Java。 主要实现 默认采用Netty作为通信框架 除了支持私有的Dubbo协议外,还支持RMI、Hession、HTTP、Thrift 支持多种序列化格式,比如Dubbo、Hession、JSON、Kryo、FST 1.1.2 Motan 微博内部使用的RPC框架,于2016年对外开源,仅支持Java。 架构 与Dubbo类似,都要在Client端(服务消费者

hive beeline ClassNotFoundException

[亡魂溺海] 提交于 2021-01-17 16:51:25
异常现象:使用beeline 或者jdbc 连接hive 执行 create table 异常为 ClassNotFoundException: org.apache.hudi.hadoop.HoodieParquetInputFormat 使用hive client可以正常执行crete table 异常分析: beeline 是通过hiveserver2 服务连接的hive,检查hiveserver2所在服务器jar包是否存在 解决方案: 1、将jar拷贝到hive/lib/ 2、修改hive-env.sh ,将jar加入 例如: export HIVE_AUX_JARS_PATH=/home/hive/lib/json-serde-1.3.7-jar-with-dependencies.jar,/home/hive/lib/hudi-hive-bundle-0.6.0-incubating.jar 3、 重启hiveserver2服务 /home/hive/bin/hiveserver2 --hiveconf hive.server2.thrift.port=10000 & 来源: oschina 链接: https://my.oschina.net/u/4343937/blog/4907167

史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

橙三吉。 提交于 2021-01-02 13:04:44
Java技术栈 www.javastack.cn 优秀的Java技术公众号 想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。 下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。 1、Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:http://dubbo.apache.org 2、为什么要用Dubbo? 因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证了高性能高可用性。 使用 Dubbo 可以将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活扩展,使前端应用能更快速的响应多变的市场需求。 下面这张图可以很清楚的诠释,最重要的一点是,分布式架构可以承受更大规模的并发流量。 下面是 Dubbo 的服务治理图。 3、Dubbo 和 Spring Cloud 有什么区别? 两个没关联,如果硬要说区别

10大高性能开发宝石,我要消灭一半程序员!

為{幸葍}努か 提交于 2020-12-11 12:53:46
这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。 - I/O优化:零拷贝技术 - I/O优化:多路复用技术 - 线程池技术 - 无锁编程技术 - 进程间通信技术 - RPC && 序列化技术 - 数据库索引技术 - 缓存技术 && 布隆过滤器 - 全文搜索技术 - 负载均衡技术 准备好了吗,坐稳了,发车! 首先,我们从最简单的模型开始。 老板告诉你,开发一个静态web服务器,把磁盘文件(网页、图片)通过网络发出去,怎么做? 你花了两天时间,撸了一个1.0版本: 主线程进入一个循环,等待连接 来一个连接就启动一个工作线程来处理 工作线程中,等待对方请求,然后从磁盘读文件、往套接口发送数据,完事儿 上线一天,老板发现太慢了,大一点的图片加载都有卡顿感。让你优化,这个时候,你需要: I/O优化:零拷贝技术 上面的工作线程,从磁盘读文件、再通过网络发送数据,数据从磁盘到网络,兜兜转转需要拷贝四次,其中CPU亲自搬运都需要两次。 零拷贝技术 ,解放CPU,文件数据直接从内核发送出去,无需再拷贝到应用程序缓冲区,白白浪费资源。 Linux API: ssize_t sendfile( int out_fd, int in_fd, off_t *offset, size_t count );

Cassandra的误解

↘锁芯ラ 提交于 2020-11-23 23:59:26
转载:https://www.infoq.cn/article/cassandra-mythology/ 正如 Apache Cassandr a 的名称是来自于著名的物洛伊女巫一样,在它身上确实存在着各种误解。和大多数误解一样,至少在一开始时它们确实是有那么一点道理的,但随着 Cassandra 不断地深化与改善,这些误解的内容已经不复存在了。在本文中,我将针对五个常见的疑惑作出解释,澄清人们的困惑。 误解:Cassandra 就是一个嵌套的 map 随着使用 Cassandra 的应用程序变得越来越复杂,以下观点正在逐渐变得清晰起来:与“任何东西都是一个数组缓冲”或者“任何东西都是一个字符串”这种设计方式相比,schema 与数据类型会使大型应用的开发与维护更加简单, 现如今,理解 Cassandra 的数据模型的最好方式是将其想像为 表与行 的组合,并且与关系型数据相似的是,Cassandra 的列也是强类型的,并且可以进行索引。 你也许还听到过其它这些说法: “Cassandra 是一种列数据库。” 列数据库 会将某个列的全部数据一起保存在磁盘上,这种方式对于数据仓库的检索方式是比较适合的,但对于那些需要对特定的行进行快速访问的应用程序来说就不太适合了。 “Cassandra 是一种 宽行数据库 。”这种说法有一定的道理,因为Cassandra