我最近开始研究使用Hive和Impala查询位于HDFS上的大量CSV数据.正如我所期望的那样,与Hive相比,我对Impala的响应时间要好得多.
我想知道是否有一些类型的查询/用例仍然需要Hive以及Impala不适合的地方.
对于HDFS上的相同数据,Impala与Hive相比如何提供更快的查询响应?
我有一个在jetty服务器上运行的REST服务,它使用一些资源数据响应GET请求.到目前为止,我检索的数据大约为几kb.我希望使用类似的REST服务,可能会返回大量数据,可能是100 MB或更多.由于请求量较低且jetty服务器和rest客户端进程都配置了足够的内存,因此不会出现内存问题.
我想知道jetty或任何网络服务器是否会限制它可以返回到客户端以响应GET的数据长度.如果是这样,它是否可以在码头配置?
最近我开始使用camel,我发现它可能解决了我的很多集成层需求.
我创建了一个java客户端应用程序(不在任何容器中运行),我定义了两个路由:
route1:将文件从传入的folder1移动到folder2
route2:将文件内容从folderx移动到mq队列.
我启动我的应用程序,这些路由正在他们的工作轮询这些文件夹并相应地路由消息.
任何人都可以解释我的路线如何运作.camel(context)是否为每个路由创建一个线程.究竟发生了什么?
注意:我在骆驼网站上找不到这方面的简单说明.
我创建了一个具有以下yaml定义的pod.
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: praveensripati/docker-demo:1.2
ports:
- containerPort: 3000
Run Code Online (Sandbox Code Playgroud)
现在我公开了pod,它创建了一个服务.
kubectl expose pod myapp-pod --type=NodePort
Run Code Online (Sandbox Code Playgroud)
容器上的端口3000暴露在节点上的端口31728上.我可以使用端口31728上的curl访问该页面.
kubectl get service myapp-pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-pod NodePort 10.107.254.254 <none> 3000:31728/TCP 5s
Run Code Online (Sandbox Code Playgroud)
这次我想公开服务而不是随机端口,而是在端口80上.所以我使用--port指定端口号为80.服务细节有点奇怪.它表示容器上的端口80暴露在节点上的端口31316上.此外,我能够使用随机端口(本例中为31316)而不是端口80使用curl访问页面.
kubectl expose pod myapp-pod --type=NodePort --target-port=3000 --port=80
kubectl get service myapp-pod
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-pod NodePort 10.105.123.73 <none> 80:31316/TCP 12s
Run Code Online (Sandbox Code Playgroud)
我无法在特定端口上公开服务,也不能在随机端口上公开服务.我尝试了几种组合并阅读了k8s文档,但没有成功.
如何在特定端口而不是随机端口上公开服务?
我有一个3层架构,看起来大致如下:
客户 - >业务 - >数据
交易理想情况应该从哪里开始?
有一种观点认为交易应该只从数据层的顶部开始.Business层仅使用业务逻辑操作业务对象,并且从不了解事务.业务完成所有操作对象的工作,然后将它们交给数据层进行持久化.这是一种适用于较低层的RESTful哲学.
另一种想法是,交易应该从业务层的顶部开始.业务层定义了逻辑工作单元,而不是数据层,因为逻辑工作单元有时包含业务逻辑,而不仅仅是数据逻辑.
我确实喜欢尽可能降低交易问题.但我也发现,除非只是CRUD操作,否则可能需要额外的努力和设计挑战来尝试将业务逻辑保留在数据层之外.如果您使用大锤应用RESTful设计模式,则可以使应用程序具有非常少的非CRUD操作.
甚至还有第三种思想流派,即客户可以启动交易,以便在需要时可以组合多个业务运营.但现在客户正在定义工作单位?这不是一个商业问题吗?
第四个想法是说我的客户端可以只是SOA组件,可以参与即使在客户端之外启动的XA事务!
我们的开发人员希望某些标准更具体,而不仅仅是"在任何您想要的地方开始交易"
有没有人对这个问题有任何意见或建议?
谢谢!
我有一个在Linux主机上运行的http服务器程序,比如B,它监听端口并消耗请求.我试图为这个http服务器生成巨大的负载(每秒> 10k请求).为此,我编写了一个http客户端程序,它将从主机A重复向此http服务器发送一个固定大小的请求.
现在,如果我在主机A上运行多个httpclient程序实例会产生什么影响.这会产生足够的负载吗?或者我可以从一台机器与一台服务器端口通信运行多少个http客户端.
到目前为止我的观察是增加实例数量并没有真正产生足够的负载或者http服务器程序/操作系统不接受.我看到cpu /内存/网络消耗很少.
有任何想法吗?我该如何衡量瓶颈?
我正在尝试使用http://camel.apache.org/http.html 上指定的 producertemplate 调用我的简单 GET rest 服务调用。我在这里以 google.com 为例。这是来自未在任何容器上运行的独立客户端。我在这里没有做什么?
SpringCamelContext camelcontext = (SpringCamelContext) springContext.getBean("camelcontextbean");
ProducerTemplate template = camelcontext.createProducerTemplate();
camelcontext.start();
Exchange exchange = template.send("http://www.google.com/search", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(Exchange.HTTP_QUERY, "hl=en&q=activemq");
}
});
Message out = exchange.getOut();
System.out.println("Response from http template is "+exchange.getOut().getBody());
System.out.println("status header is "+out.getHeader(Exchange.HTTP_RESPONSE_CODE));
Run Code Online (Sandbox Code Playgroud)
我没有得到任何回应。输出是:
来自 http 模板的响应为空
状态头为空
apache-camel ×2
http ×2
java ×2
architecture ×1
hadoop ×1
hive ×1
impala ×1
jetty ×1
kubernetes ×1
networking ×1
rest ×1
service ×1
spring ×1
tcp ×1
transactions ×1
webserver ×1