• [整体安全] Apache OFBiz 反序列化远程代码执行漏洞预警(CVE-2021-26295)
    一、概要近日,华为云关注到Apache OFBiz官方发布安全公告,披露存在一处反序列化远程代码执行漏洞(CVE-2021-26295)。由于处理序列化数据时输入验证不安全,远程攻击者可以将特制构造的数据传递给应用程序,然后在目标系统上执行任意代码。Apache OFBiz是一个开源的企业资源计划(ERP)系统,华为云提醒使用Apache OFBiz的用户及时安排自检并做好安全加固。参考链接:https://seclists.org/oss-sec/2021/q1/255二、威胁级别威胁级别:【严重】(说明:威胁级别共四级:一般、重要、严重、紧急)三、漏洞影响范围影响版本:Apache OFBiz < 17.12.06安全版本:Apache OFBiz 17.12.06四、漏洞处置目前官方已在新版本中修复了该漏洞,请受影响的用户升级至安全版本:https://www.apache.org/dyn/closer.lua/ofbiz/apache-ofbiz-17.12.06.zip注:修复漏洞前请将资料备份,并进行充分测试。
  • [技术干货] Tomcat
    Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0.41。
  • [技术干货] 如何通过gzip和nginx来提高网站打开速度及整体性能
    要知道,网站的打开速度取决于浏览器打开下载的网页文件大小。如果传输的页面内容文件减少,那你网站的打开速度一定会加快。特别是手机端的用户,打开网站速度受限于移动端网络,所以压缩网站页面内容显得至关重要。gzip是一种非常流行的数据压缩方式。你可以在nginx配置中开启gzip来压缩网页文件。然后,这些文件又由浏览器解压缩,文件不会受任何。但是压缩文件是会占用服务器资源,所以最好压缩那些效果比较好的文件。比如文本文件压缩效果非常好,通常会缩小两倍多。而JPG或PNG这类文件,本身就已经进行格式压缩,所以再做二次压缩,效果并不是特别明显。本文主要讲一下如何配置nginx来开启gzip压缩。环境ubuntu 20.04服务器root权限或具有sudo特权的非root用户一、创建测试文件在这一步中,我们将在默认的Nginx目录中创建几个测试文件。稍后我们将使用这些文件来检查Nginx的默认行为是否进行gzip压缩,并测试配置更改是否具有预期的效果。首先,创建几个测试文件,这些文件主要用来查看我们的gzip压缩效果。gzip是不会分析文件内容的,它主要通过文件扩展名来判断文件类型,如果还分析文件内容,那整个效率就会大大降低。所以我们可以创建一些图像文件、html文件和一些样式文件。sudo truncate -s 1k /var/www/html/test.html sudo truncate -s 1k /var/www/html/test.jpg sudo truncate -s 1k /var/www/html/test.css sudo truncate -s 1k /var/www/html/test.js下一步是检查Nginx在使用我们刚创建的文件在全新安装中压缩请求的文件时的行为。二、命令方式查看压缩效果使用curl命令方式,添加标头Accept-Encoding: gzip,来查看各文件的压缩结果。curl -H "Accept-Encoding: gzip" -I http://localhost/test.html 可以看到以下结果:Output HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:04:25 GMT Content-Type: text/html Last-Modified: Tue, 09 Feb 2021 19:03:41 GMT Connection: keep-alive ETag: W/"6022dc8d-400" Content-Encoding: gzip在最后一行,出现Content-Encoding: gzip字样。说明服务器正在用gzip压缩来发送文件。默认情况下,nginx仅压缩html文件。所有在这个命令中可以看到文件做了压缩处理。但其它的文件格式,并未做压缩处理。可以通过下面这条命令来验证我们刚才的说法。curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg 再看一下结果,和之前的有所不同:Output HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:05:49 GMT Content-Type: image/jpeg Content-Length: 1024 Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT Connection: keep-alive ETag: "6022dc91-400" Accept-Ranges: bytes输出结果中没有出现Content-Encoding: gzip,这意味着该文件并没有做任何的压缩。你也可以使用这个方法来测试css等样式文件。curl -H "Accept-Encoding: gzip" -I http://localhost/test.css结果一样,没有出现Content-Encoding: gzipOutput HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:06:04 GMT Content-Type: text/css Content-Length: 1024 Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT Connection: keep-alive ETag: "6022dc91-400" Accept-Ranges: bytes 三、配置Nginx开启gzip功能本节主要操作相关配置,让gzip可以处理其它几种文件格式的压缩。你可以使用nano或vim编辑nginx的配置文件。sudo nano /etc/nginx/nginx.conf 找到gzip设置部分,如下所示:/etc/nginx/nginx.conf. . . ## # `gzip` Settings # # gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; . . .因为我们用的是ubuntu 20.04。所以默认情况下,gzip是开启的。但有些设置无效,所以我们需要做一些修改:通过取消注释行前面的#来启用其他设置(即,删除#符号)添加gzip_min_length 256;参数,该参数是告诉nginx,不要去压缩小于256字节的文件,因为很小的文件没有太必要。压缩这类文件反而影响服务器效率。在gzip_types参数中添加其他文件类型扩展名,这些文件类型可以是Web字体,图片、XML、JSON结构化数据或SVG图片文件。应用这些更改之后,设置部分应如下所示:/etc/nginx/nginx.conf. . . ## # `gzip` Settings # # gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; gzip_types   application/atom+xml   application/geo+json   application/javascript   application/x-javascript   application/json   application/ld+json   application/manifest+json   application/rdf+xml   application/rss+xml   application/xhtml+xml   application/xml   font/eot   font/otf   font/ttf   image/svg+xml   text/css   text/javascript   text/plain   text/xml; . . . 保存并关闭文件以退出。要启用新配置,需要重新启动Nginx:sudo systemctl restart nginx 四、确保所有的配置正确重复之前的测试步骤,执行相应的命令请求:curl -H "Accept-Encoding: gzip" -I http://localhost/test.html因为html文件,之前已经默认开启压缩,所以这个命令执行结果保持不变:Output HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:04:25 GMT Content-Type: text/html Last-Modified: Tue, 09 Feb 2021 19:03:41 GMT Connection: keep-alive ETag: W/"6022dc8d-400" Content-Encoding: gzip然后我们来测试一下之前未压缩的css样式表,看看结果会有什么变化:curl -H "Accept-Encoding: gzip" -I http://localhost/test.css可以看到gzip正在压缩文件:Output HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:21:54 GMT Content-Type: text/css Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT Connection: keep-alive Vary: Accept-Encoding ETag: W/"6022dc91-400" Content-Encoding: gzip我们可以用相同的方式测试一下jpg文件:curl -H "Accept-Encoding: gzip" -I http://localhost/test.jpg没有看到gzip压缩:Output HTTP/1.1 200 OK Server: nginx/1.18.0 (Ubuntu) Date: Tue, 09 Feb 2021 19:25:40 GMT Content-Type: image/jpeg Content-Length: 1024 Last-Modified: Tue, 09 Feb 2021 19:03:45 GMT Connection: keep-alive ETag: "6022dc91-400" Accept-Ranges: bytes因为在之前的配置中,我们并没有添加 image/jpeg。在这种情况下,我们已经在Nginx中成功配置了gzip。结论可以看出,gzip很容易配置,而且带来的速度提升也非常明显,我在自己的网站www.academicphd.com都添加了这类参数。 搜索引擎也非常喜欢这类加载方式,如果想提高搜索引擎的排名,增加gzip是非常有必要的。
  • [整体安全] 【漏洞预警】Apache Solr stream.url SSRF与任意文件读取漏洞
    漏洞描述:Apache Solr是一个开源的搜索服务,使用Java语言开发。Apache Solr的某些功能存在过滤不严格,在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或文件读取漏洞。提醒Solr用户尽快采取安全措施阻止漏洞攻击。漏洞评级:Apache Solr stream.url SSRF与任意文件读取漏洞 中危漏洞复现:影响版本:Apache Solr 所有版本安全版本:官方不予修复,暂无安全版本。安全建议:1. 增加身份验证/授权,可参考官方文档:https://lucene.apache.org/solr/guide/8_6/authentication-and-authorization-plugins.html2. 禁止Solr API 以及管理 UI 直接对公网开放。设置防火墙,以便只允许受信任的计算机和人员访问。相关链接:https://issues.apache.org/jira/browse/SOLR
  • [应用安全] Apache Velocity远程代码执行漏洞预警(CVE-2020-13936)
    一、概要近日,华为云关注到Apache Velocity官方发布安全公告,披露Apache Velocity存在一处远程代码执行漏洞(CVE-2020-13936)。能够修改Velocity模板的攻击者可以执行任意Java代码或以与运行Servlet容器的帐户相同的权限去运行任意系统命令。Velocity是Apache基金会旗下的一款开源软件项目,可实现Web应用程序在表示层和业务逻辑层之间的隔离(即MVC设计模式)。华为云提醒使用Apache Velocity用户及时安排自检并做好安全加固。参考链接:https://velocity.apache.org/news.html#CVE-2020-13936二、威胁级别威胁级别:【重要】(说明:威胁级别共四级:一般、重要、严重、紧急)三、漏洞影响范围影响版本:Apache Velocity =< 2.2安全版本:Apache Velocity >= 2.3四、漏洞处置目前官方已在新版本中修复了该漏洞,请受影响的用户升级至安全版本:https://velocity.apache.org/download.cgi注:修复漏洞前请将资料备份,并进行充分测试。
  • [问题求助] 【flink 1.7.2】【向Kafka生产】ClassNotFoundException: org.apache.kafka.
    【功能模块】bin/flink run --class com.huawei.flink.example.sqljoin.WriteIntoKafka4SQLJoin /opt/Flink_test/flink-examples-1.0.jar --topic topic-test --bootstrap.servers xxx.xxx.xxx.xxx:21005运行测试 例子   com.huawei.flink.example.sqljoin.WriteIntoKafka4SQLJoin运行不通过  【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)--sasl.kerberos.service.name kafka --ssl.truststore.location /home/truststore.jks --ssl.truststore.password huawei******************************************************************************************<topic> is the kafka topic name<bootstrap.servers> is the ip:port list of brokers******************************************************************************************java.lang.NoClassDefFoundError: org/apache/kafka/clients/producer/Callback        at com.huawei.flink.example.sqljoin.WriteIntoKafka4SQLJoin.main(WriteIntoKafka4SQLJoin.java:53)        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)        at java.lang.reflect.Method.invoke(Method.java:498)        at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:529)        at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:421)        at org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:430)        at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java:814)        at org.apache.flink.client.cli.CliFrontend.runProgram(CliFrontend.java:288)        at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java:213)        at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java:1051)        at org.apache.flink.client.cli.CliFrontend.lambda$main$11(CliFrontend.java:1127)        at java.security.AccessController.doPrivileged(Native Method)        at javax.security.auth.Subject.doAs(Subject.java:422)        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)        at org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)        at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java:1127)Caused by: java.lang.ClassNotFoundException: org.apache.kafka.clients.producer.Callback        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)        ... 18 more
  • [技术干货] 配置 WebDAV 访问
    先决条件在开始本指南之前,您需要以下几点:乌本图 20.04 服务器。使用Ubuntu 20.04 关注初始服务器设置,创建支持 Sudo 的非根用户。解决服务器公共 IP 地址的域名。域和 DNS解释了如何设置此设置。Aapache网络服务器配置为您的域名服务,您可以完成如何在Ubuntu 20.04教程上安装ApacheWeb服务器来设置此教程-确保遵循步骤5-设置虚拟主机作为此先决条件的一部分。域名的 SSL 证书。按照如何安全阿帕奇与让我们加密Ubuntu 20.04指南的说明如何做到这一点。WebDAV 需要很少的服务器资源,因此任何大小的虚拟机都足以让您的 WebDAV 服务器启动并运行。登录您的服务器,作为支持 Sudo 的非根用户开始第一步。第 1 步 - 启用 WebDAV 阿帕奇模块Apache 网络服务器作为可选模块提供了大量功能。您可以启用和禁用这些模块,以便从 Apache 中添加和删除其功能。其 WebDAV 功能包含在您与 Apache 一起安装的模块中,但默认情况下未启用。您使用a2enmod实用程序为阿帕奇启用 WebDAV 模块。以下两个命令将启用 WebDAV 模块:sudo a2enmod davsudo a2enmod dav_fs现在,重新启动阿帕奇以加载新模块:sudo systemctl restart apache2.serviceWebDAV 模块现已加载并运行。在下一步中,您将配置 Apache,通过 WebDAV 为您的文件提供服务。步骤2-配置阿帕奇在此步骤中,您将创建 Apache 实现 WebDAV 服务器所需的所有配置。首先,创建 WebDAV 根文件夹,该文件夹将保留要通过 WebDAV 提供的文件:/var/www/webdavsudo mkdir /var/www/webdav然后,将 Apache 的用户设置为 WebDAV 目录的所有者:www-datasudo chown www-data:www-data /var/www/webdav接下来,您需要为 Apache 用于管理和锁定 WebDAV 用户正在访问的文件的数据库文件创建一个位置。此文件需要可读且可由 Apache 写入,但绝不能从网站上获取,因为这样可能会泄露敏感信息。创建一个新的目录与实用程序的数据库文件在:mkdir/usr/local/apache/var/sudo mkdir -p /usr/local/apache/var/该选项告诉实用程序在您指定的路径中创建所有目录(如果它们不存在)。-pmkdir接下来,将新目录的所有者和组设置为 Apache 的用户和组与实用程序:chownsudo chown www-data:www-data /usr/local/apache/var现在,您需要编辑持有有关您域名的 Apache 配置的"虚拟霍斯特"文件。如果您使用 Certbot 注册 SSL 证书,此文件位于并以结束。/etc/apache2/sites-enabled/le-ssl.conf使用文本编辑器打开虚拟酒店文件:sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf在第一行中,添加指令:DavLockDB/等/阿帕奇2/支持站点/your_domain-勒-斯尔.康夫DavLockDB /usr/local/apache/var/DavLock . . .接下来,在所有其他指令后,在标签内添加以下指令和指令:AliasDirectory<VirtualHost>/等/阿帕奇2/支持站点/your_domain-勒-斯尔.康夫. . . Alias /webdav /var/www/webdav <Directory /var/www/webdav>     DAV On </Directory>别名指令映射到文件夹的请求。http://your.server/webdav/var/www/webdav目录指令告诉 Apache 为文件夹启用 WebDAV。您可以从阿帕奇文档中了解更多有关mod_dav。 /var/www/webdav您的最终虚拟收件文件将如下,其中包括正确位置中的 "" 和"指令":DavLockDBAliasDirectory/等/阿帕奇2/支持站点/your_domain-勒-斯尔.康夫DavLockDB /usr/local/apache/var/DavLock <IfModule mod_ssl.c> <VirtualHost *:443>         ServerAdmin admin@your_domain         ServerName your_domain         ServerAlias your_domain         DocumentRoot /var/www/your_domain         ErrorLog ${APACHE_LOG_DIR}/error.log         CustomLog ${APACHE_LOG_DIR}/access.log combined         SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem         SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem         Include /etc/letsencrypt/options-ssl-apache.conf         Alias /webdav /var/www/webdav         <Directory /var/www/webdav>             DAV On         </Directory> </VirtualHost> </IfModule>如果您在编辑 Apache 的配置时犯了任何语法错误,它将拒绝启动。在重新启动阿帕奇之前检查您的 Apache 配置是一个很好的做法。使用实用程序检查配置:apachectlsudo apachectl configtest如果您的配置无错误,将打印。当您收到此消息时,重新启动 Apache 以加载新配置是安全的:apachectlSyntax OKsudo systemctl restart apache2.service您现在已将 Apache 配置为 WebDAV 服务器,以提供来自的文件。但是,您尚未配置或启用身份验证,因此任何可以访问您的服务器的人都能够阅读、编写和编辑您的文件。在下一节中,您将启用和配置 WebDAV 身份验证。/var/www/webdav第 3 步 - 向 WebDAV 添加身份验证您将使用的身份验证方法称为消化认证。文摘身份验证是 WebDAV 身份验证更安全的方法,尤其是在与 HTTPS 配合使用时。文摘身份验证适用于存储允许访问 WebDAV 服务器的用户名和密码的文件。与摘要文件一样,需要存储在 Apache 可以读取和书写的位置,并且无法从您的网站送达该位置。DavLockDB正如您已经为此目的创建的,您也会将文摘文件放置在那里。/usr/local/apache/var/首先,创建一个空文件调用与实用程序:users.password/usr/local/apache/var/touchsudo touch /usr/local/apache/var/users.password然后更改所有者和组,以便 Apache 可以阅读并写信给它:www-datasudo chown www-data:www-data /usr/local/apache/var/users.password使用该实用程序将新用户添加到 WebDAV 中。以下命令添加用户萨米:htdigestsudo htdigest /usr/local/apache/var/users.password webdav sammy在此命令中是该领域,应被视为您添加新用户的组。这也是用户访问 WebDAV 服务器时输入用户名和密码时显示的文本。您可以选择任何领域最好地描述您的使用案例。webdavhtdigest将提示您输入密码,并在运行密码时确认密码:OutputAdding user sammy in realm webdav New password: Re-type new password:接下来,您将告诉 Apache 需要 WebDAV 访问身份验证并使用该文件。users.password打开您的虚拟酒店文件:sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf然后,在指令块内添加以下行:Directory/等/阿帕奇2/支持站点/your_domain-勒-斯尔.康夫AuthType Digest AuthName "webdav" AuthUserFile /usr/local/apache/var/users.password Require valid-user这些指令有以下几点:AuthType Digest:使用消化认证方法。AuthName "webdav":仅允许用户来自该领域。webdavAuthUserFile /usr/local/apache/var/users.password:使用所包含的用户名和密码。/usr/local/apache/var/users.passwordRequire valid-user:允许访问提供正确密码的文件中列出的任何用户。users.password您的指令如下:<Directory>/等/阿帕奇2/支持站点/your_domain-勒-斯尔.康夫<Directory /var/www/webdav>   DAV On   AuthType Digest   AuthName "webdav"   AuthUserFile /usr/local/apache/var/users.password   Require valid-user </Directory>接下来,启用阿帕奇模块,以便阿帕奇知道如何使用消化身份验证方法:auth_digestsudo a2enmod auth_digest最后,重新启动阿帕奇以加载所有新配置:sudo systemctl restart apache2.service您现在已配置 WebDAV 服务器以使用 HTTPS 并消化身份验证。它已准备好开始向用户提供服务文件。在下一节中,您将从窗口、Linux 或 macOS 访问 WebDAV 服务器。第 4 步 - 访问网络无人机在此步骤中,您将访问 WebDAV 服务器,其中具有 macOS、Windows 和 Linux (KDE 和 GNOME) 的本机文件浏览器。在开始访问 WebDAV 服务器之前,您应该将文件放入 WebDAV 文件夹中,以便有一个文件需要测试。使用文本编辑器打开新文件:sudo nano /var/www/webdav/webdav-testfile.txt添加一些文本,然后保存和退出。现在,将此文件的所有者和组设置为:www-datasudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt您现在已准备好开始访问和测试您的 WebDAV 服务器。利努克斯 · 克德首先,打开KDE 海豚文件管理器。然后使用具有以下表单的 URL 编辑地址栏:当您点击ENTER 时,将提示您输入用户名和密码。如果您希望海豚保留密码,请检查"记住"密码选项。然后单击"确定"以继续。它现在将向您展示目录的内容,您可以像在本地系统中一样操作这些目录。/var/www/webdav/通过抓取地址栏中的文件夹图标并将其拖到左侧导航面板中的远程部分下,为 WebDAV 服务器添加书签。首先,通过单击桌面右侧的图标来打开"文件"应用程序。当文件打开时,以下为:单击+其他位置。使用以下形式输入 WebDAV 实例的 URL:然后,单击"连接"。然后,它将用用户名和密码对话框提示您。输入您的用户名和密码,然后单击"连接"登录到您的 WebDAV 服务器。如果您不想每次访问文件时输入密码,请检查"永远记住"选项。您的 WebDAV 文件夹现在将可在文件中使用,您可以在那里管理您的文件:
  • [技术干货] 如何监控服务器健康与检查
    作为系统管理员,了解您的基础设施和服务的当前状态是最佳做法。理想情况下,您希望在用户之前注意到磁盘或应用程序停机时间失败。像Checkmk这样的监控工具可以帮助管理员检测这些问题并维护健康的服务器。通常,监控软件可以跟踪服务器的硬件、正常运行时间和服务状态,并在出现问题时提高警报。在一个非常基本的情况下,如果任何服务出现问题,监控系统会提醒您。在更稳健的信号中,通知会在出现任何可疑迹象(如内存使用量增加或 TCP 连接异常数量)后不久发出。有许多监控解决方案提供不同程度的复杂性和功能集,包括免费和商业。在许多情况下,这些工具的安装、配置和管理既困难又耗时。然而,Checkmk是一种既坚固又易于安装的监控解决方案。它是一个自成一体的软件包,将Nagios(一种流行的开源提醒服务)与用于收集、监控和绘制数据的附加组件相结合。它还配备了Checkmk的网络界面-一个全面的工具,解决纳吉奥斯的许多缺点。它提供了一个用户友好的仪表板,一个功能齐全的通知系统,以及一个存储库的易于安装的监控代理为许多Linux分布。如果不是 Checkmk 的 Web 界面,我们将不得不针对不同的任务使用不同的视图,如果不进行广泛的文件修改,就无法配置所有这些功能。在此指南中,我们将在 Ubuntu 18.04 服务器上设置 Checkmk,并监控两个独立的主机。我们将监控 Ubuntu 服务器本身以及单独的 CentOS 7 服务器,但我们可以使用相同的方法将任意数量的附加主机添加到我们的监控配置中。先决条件一个Ubuntu 18.04服务器与一个常规的,非根用户与sudo特权。一个 CentOS 7 服务器,具有常规的非根用户,具有 Sudo 特权。第1步-在乌本图安装支票为了使用我们的监控站点,我们首先必须在 Ubuntu 服务器上安装 Checkmk。这将为我们提供所有我们需要的工具。Checkmk 提供正式的即用 Ubuntu 软件包文件,我们可以用它来安装软件包。首先,让我们更新包列表,以便我们有存储库列表的最新版本:sudo apt update要浏览包裹,我们可以转到包列表网站。Ubuntu 18.04 等,可以在页面菜单中选择。现在下载包:wget https://checkmk.com/support/1.6.0p8/check-mk-raw-1.6.0p8_0.bionic_amd64.deb然后安装新下载的包:sudo apt install -y ./check-mk-raw-1.6.0p8_0.bionic_amd64.deb此命令将安装 Checkmk 包以及所有必要的依赖项,包括用于提供对监控界面的 Web 访问权限的Apache Web 服务器。安装完成后,我们现在可以访问命令。尝试一下:omdsudo omd此命令将输出以下:omdOutputUsage (called as root):  omd help                        Show general help . . . General Options:  -V <version>                    set specific version, useful in combination with update/create  omd COMMAND -h, --help          show available options of COMMAND该命令可以管理我们服务器上的所有检查实例。它可以立即启动和停止所有监控服务,我们将用它来创建我们的 Checkmk 实例。但是,首先,我们必须更新防火墙设置,以便外部访问默认 Web 端口。omd步骤2-调整防火墙设置在我们能够与 Checkmk 合作之前,有必要允许外部访问防火墙配置中的 Web 服务器。假设您遵循了先决条件中的防火墙配置步骤,您将设置 UFW 防火墙来限制对服务器的访问。在安装过程中,Apache 会向 UFW 注册,以提供通过防火墙启用或禁用访问 Apache 的简单方法。要访问阿帕奇,请使用以下命令:sudo ufw allow Apache现在验证更改:sudo ufw status您将看到 Apache 列在允许的服务中:OutputStatus: active To                         Action      From --                         ------      ---- OpenSSH                    ALLOW       Anywhere Apache                     ALLOW       Anywhere OpenSSH (v6)               ALLOW       Anywhere (v6) Apache (v6)                ALLOW       Anywhere (v6)这将允许我们访问 Checkmk 网络界面。在下一步中,我们将创建第一个 Checkmk 监控实例。第3步-创建检查监控实例Checkmk 使用实例或单个安装的概念来隔离服务器上的多个检查副本。在大多数情况下,只有一份 Checkmk 就足够了,这就是我们如何在此指南中配置软件。首先,我们必须给我们的新实例一个名称,我们将在整个文本中使用。要创建实例,键入:monitoringsudo omd create monitoring该工具将自动为我们设置所有内容。命令输出将类似于以下内容:omdOutputAdding /opt/omd/sites/monitoring/tmp to /etc/fstab. Creating temporary filesystem /omd/sites/monitoring/tmp...OK Restarting Apache...OK Created new site monitoring with version 1.6.0p8.cre.   The site can be started with omd start monitoring.   The default web UI is available at http://your_ubuntu_server/monitoring/   The admin user for the web applications is cmkadmin with password: your-default-password   (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.)   Please do a su - monitoring for administration of this site.在此输出中,会突出显示用于访问我们监控界面的 URL 地址、默认用户名和密码。该实例现已创建,但仍需要启动。要启动实例,键入:sudo omd start monitoring现在,所有必要的工具和服务将立即开始。最后,我们将看到一个输出,验证我们所有的服务都已成功启动:OutputStarting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Initializing Crontab...OK实例已启动并运行。要访问 Checkmk 实例,请在 Web 浏览器中打开。您将被提示输入密码。使用事先打印在屏幕上的默认凭据:我们将在以后更改这些默认值。http://your_ubuntu_server_ip/monitoring/Checkmk 屏幕以仪表板打开,该仪表板显示列表中的所有服务和服务器状态,并使用类似于地球的实际图形。安装后,这些是空的,但我们将很快使其显示我们的服务和系统的状态。下一步,我们将更改默认密码,以确保使用此界面保护站点。第 4 步 -更改您的管理密码在安装过程中,Checkmk 为管理用户生成随机密码。此密码打算在安装时更改,因此它通常很短,不太安全。我们可以通过 Web 界面更改此问题。cmkadmin首先,从左侧的WATO - 配置菜单打开"用户"页面。该列表将显示当前有权访问 Checkmk 站点的所有用户。在新的安装中,它只会列出两个用户。第一种是用于自动工具:第二个是我们曾经登录到该网站的用户。单击用户旁边的铅笔图标以更改其详细信息,包括密码。更新密码,添加管理电子邮件,并进行任何其他需要的更改。保存更改后,我们将被要求使用新凭据再次登录。这样做,并返回到仪表板,在那里还有一件事,我们必须做充分应用我们的新配置。再次打开来自WATTO-配置菜单左侧的用户页面。左上角标有"1 Change"的橙色按钮告诉我们,我们对 Checkmk 的配置进行了一些更改,我们需要保存并激活它们。每次我们更改监控系统的配置时,不仅在编辑用户凭据之后,都会发生这种情况。要保存和激活有待更改,我们必须单击此按钮,并同意使用以下屏幕上的"激活受影响"选项激活列出的更改。激活更改后,新用户的数据将写入配置文件,并将被系统的所有组件使用。Checkmk 会自动通知各个监控系统组件,必要时重新加载它们,并管理所有需要的配置文件。检查姆克安装现已准备就绪,可以使用。下一步,我们将在监控系统中添加第一个主机。第5步-监控第一个主机我们现在准备监视第一个主机。为此,我们将首先在 Ubuntu 服务器上安装。然后,我们将限制使用。check-mk-agentxinetd安装 Checkmk 的组件负责接收、存储和显示监控信息。它们不提供信息本身。为了收集实际数据,我们将使用Checkmk 代理。Checkmk 代理专为该工作而设计,能够同时监控所有重要系统组件,并将这些信息报告回 Checkmk 实例。安装代理我们将监控的第一个主机将是——我们安装Checkmk实例本身的服务器。your_ubuntu_server首先,我们必须安装检查代理。所有主要分销的包(包括 Ubuntu)可直接从 Web 界面获得。打开来自WATO 的监控代理页面 - 左侧的配置菜单。您将看到可用的代理下载与最流行的包下的第一部分标记包装代理。该包是适合基于 Debian 的分销,包括乌本图。从 Web 浏览器复制该包的下载链接,并使用该地址下载该包。check-mk-agent_1.6.0p8-1_all.debwget http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent_1.6.0p8-1_all.deb下载后,安装包:apt install -y ./check-mk-agent_1.6.0p8-1_all.deb现在验证代理是否已成功安装:check_mk_agent命令将输出一个很长的文本,看起来像胡言乱语,但将有关系统的所有重要信息组合在一个地方。Output<<<check_mk>>> Version: 1.6.0p8 AgentOS: linux . . . ["monitoring"] <<<job>>> <<<local>>>Checkmk 使用此命令的输出从监控主机中收集状态数据。现在,我们将限制访问监控数据。xinetd限制使用新卫星访问监控数据默认情况下,来自的数据使用xinetd送达,这是一种在访问某个网络端口时在某个网络端口上输出数据的机制。这意味着我们可以通过使用 Telnet 从互联网上的任何其他计算机访问端口(Checkmk 的默认端口),除非我们的防火墙配置不允许这样做。check_mk_agentcheck_mk_agent6556向互联网上的任何人发布有关服务器的重要信息不是一个好的安全政策。我们只允许运行 Checkmk 并在我们监督下的主机访问此数据,以便只有我们的监控系统才能收集这些数据。如果您遵循了初始服务器设置教程(包括设置防火墙的步骤),则默认会阻止访问 Checkmk 代理。但是,在服务配置中直接执行这些访问限制是一种好做法,而不是仅仅依靠防火墙来保护它。要限制对代理数据的访问,我们必须编辑配置文件。打开您最喜爱的编辑器中的配置文件。要使用纳米,类型:/etc/xinetd.d/check_mksudo nano /etc/xinetd.d/check_mk找到此部分:/等/新/check_mk. . . # configure the IP address(es) of your Nagios server here: #only_from      = 127.0.0.1 10.0.20.1 10.0.20.2 . . .该设置负责限制对特定 IP 地址的访问。因为我们现在正在监视 Checkmk 运行的同一台服务器,因此只能允许连接。取消承诺并将配置设置更新为:only_fromlocalhost/等/新/check_mk. . . # configure the IP address(es) of your Nagios server here: only_from      = 127.0.0.1. . .保存并退出文件。必须重新启动新戴蒙才能进行更改。现在就这样做:sudo systemctl restart xinetd现在,我们的代理已启动并运行,并仅限于接受本地连接。我们可以继续使用Checkmk为该主机配置监控。在支票网络界面中配置主机首先,要添加一个新的主机来监视,我们必须转到WATTO-配置菜单中的主机菜单。从这里点击创建新的主机。我们将被要求提供一些关于主机的信息。机名称是 Checkmk 用于监控的熟悉名称。它可能是一个完全合格的域名,但没有必要。在此示例中,我们将命名主机,就像 Checkmk 实例本身的名称一样。由于无法解决我们的 IP 地址,我们还必须提供服务器的 IP 地址。由于我们正在监控本地主机,IP将只是。检查IPv4 地址框以启用手动 IP 输入并输入文本字段中的值。monitoringmonitoring127.0.0.1数据源部分的默认配置依赖于 Checkmk 代理来提供监控数据,这很好。网络段设置用于表示远程网络上的主机,其特点是预期延迟较高,而不是故障迹象。由于这是本地主机,默认设置也正常。要保存主机并配置将监控哪些服务,请单击"保存"并转到"服务"按钮。检查将做一个自动库存。这意味着它将收集代理的输出并破译它,以了解它可以监控哪些类型的服务。所有可用于监控的服务都将在列表中,包括 CPU 负载、内存使用和磁盘上的免费空间。为了支持对所有已发现的服务进行监控,我们必须单击尚未决定的服务(当前未监控)部分下的"监视器"按钮。这将刷新页面,但现在所有服务都将列在监控服务部分之下,通知我们它们确实受到监控。与更改用户密码时的情况一样,这些新更改必须在上线前保存并激活。按下 2 个更改按钮,并使用"激活受影响"按钮接受更改。之后,主机监控将启动并运行。现在,您已准备好处理您的服务器数据。使用左侧的概述/主概述菜单项查看主仪表板。使用监控数据现在,让我们使用左侧的概述/主概述菜单项目查看主仪表板:地球球体现在完全绿色,桌子说,一个主机是没有问题的。在主机/所有主机视图中(使用左侧的菜单),我们可以看到完整的主机列表,该列表现在由单个主机组成。在那里,我们将看到有多少服务健康状况良好(以绿色显示),有多少服务失败,有多少服务有待检查。点击主机名后,我们将能够看到所有服务的列表,其完整的状态和他们的Perf-O-米。Perf-O-Meter显示单个服务相对于 Checkmk 认为健康良好的服务的性能。返回可绘制数据的所有服务在其名称旁边显示一个图形图标。我们可以使用该图标访问与服务相关的图形。由于主机监控是新鲜的,图形上几乎没有任何东西,但一段时间后,图表将提供有价值的信息,说明我们的服务性能如何随着时间的推移而变化。第 6 步 - 监控第二个中心主机当您拥有多个主机时,监控变得非常有用。我们现在将添加第二个服务器到我们的Checkmk实例,这一次运行CentOS 7。与我们的Ubuntu服务器一样,安装Checkmk代理对于收集CentOS上的监控数据是必要的。但是,这一次,我们将需要一个来自Web界面中的监视代理页面的包,称为。。rpmcheck-mk-agent-1.6.0p8-1.noarch.rpm但是,首先,我们必须安装,这在默认情况下在CentOS安装中不可用。,我们会记住,是一个护卫,负责使通过网络提供的监测数据可用。xinetdXinetdcheck_mk_agent在CentOS服务器上,首先安装:xinetdsudo yum install -y xinetd现在,我们可以下载并安装 CentOS 服务器所需的监控代理包:sudo yum install -y http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent-1.6.0p8-1.noarch.rpm就像以前一样,我们可以通过执行来验证代理是否正常工作:check_mk_agentsudo check_mk_agent输出将类似于来自 Ubuntu 服务器的输出。现在我们将限制对代理的访问。限制访问这一次,我们将不会监控本地主机,因此必须允许来自安装 Checkmk 的 Ubuntu 服务器的连接来收集数据。为了实现这一点,请首先打开您的配置文件:xinetdsudo vi /etc/xinetd.d/check_mk在这里,您将看到您的服务的配置,指定如何通过护蒙访问Checkmk代理。查找以下两条评论行:check_mkxinetd/等/新/check_mk. . . # configure the IP address(es) of your Nagios server here: #only_from      = 127.0.0.1 10.0.20.1 10.0.20.2 . . .现在取消处理第二行,并将本地 IP 地址替换为:your_ubuntu_server_ip/等/新/check_mk. . . # configure the IP address(es) of your Nagios server here: only_from      = your_ubuntu_server_ip. . .通过键入然后保存并退出文件。使用::xENTERxinetdsudo systemctl restart xinetd我们现在可以继续配置检查,以监控我们的CentOS 7主机。在检查中配置新主机要向 Checkmk 添加其他主机,我们像以前一样使用主机菜单。这一次,我们将命名主机,配置其 IP 地址,并在网络段选择框下选择WAN(高延迟),因为主机位于另一个网络上。如果我们跳过这个,把它作为本地,Checkmk很快就会提醒我们,主机是下来,因为它会期望它响应代理查询比可能在互联网上快得多。centos单击"保存"并转到"服务",该服务将显示可用于在 CentOS 服务器上监控的服务。列表将非常类似于第一个主机的列表。同样,这一次我们还必须单击监视器,然后使用左上角的橙色按钮激活更改。激活更改后,我们可以验证主机是否在"所有主机"页面上进行监控。去那里两个主机,而且,现在将可见。您现在正在监视Ubuntu服务器和带有Checkmk的CentOS服务器。可以监控更多的主机。事实上,除了服务器性能之外,没有上限,这应该不成问题,直到您的主机数量达到数百个。此外,任何其他主机的程序都是一样的。支票代理和包装工作在乌本图,CentOS,和大多数其他Linux分销。debrpm结论在此指南中,我们设置了两个具有两种不同Linux分布的服务器:乌本图和CentOS。然后,我们安装并配置了 Checkmk 来监视两台服务器,并探索了 Checkmk 强大的 Web 界面。Checkmk 允许轻松设置完整且多功能的监控系统,该系统将手动配置的所有辛勤工作打包到一个易于使用的 Web 界面中,其中包含各种选项和功能。使用这些工具,可以监控多个主机:设置电子邮件、短信或推送问题通知;设置更多服务的额外检查;监控可访问性和性能等。
  • [问题求助] 【FusionInsight产品】Apache Kylin对接FusionInsight时web页面打不开
    【功能模块】FusionInsight HD【操作步骤&问题现象】Apache Kylin对接FusionInsight时web页面打不开, 在kylin.log可以看到报错【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] 【FusionInsight产品】Apache kylin对接MRS启动报错
    【功能模块】FusionInsight【操作步骤&问题现象】在测试Apache Kylin对接FusionInsight的时候启动(kylin.sh start)有报错,不知道什么原因。【截图信息】【日志信息】 (可选,上传日志内容或者附件)
  • [问题求助] 【Kafka产品】Apache Kylin跑sample-streaming.sh报错求助
    【功能模块】kafka【操作步骤&问题现象】参考apache kylin对接文档,做sample-streaming.sh用例的时候在kylin.log遇到报错【截图信息】【日志信息】(可选,上传日志内容或者附件)2020-12-16 15:23:18,010 ERROR [http-nio-7070-exec-5] controller.CubeController:434 : Timeout expired while fetching topic metadataorg.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata2020-12-16 15:23:18,014 ERROR [http-nio-7070-exec-5] controller.BasicController:63 :org.apache.kylin.rest.exception.InternalErrorException: Timeout expired while fetching topic metadata        at org.apache.kylin.rest.controller.CubeController.buildInternal(CubeController.java:435)        at org.apache.kylin.rest.controller.CubeController.rebuild2(CubeController.java:418)
  • [技术干货] Jmeter在Linux下的运行测试
    一、JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。1.1、JMeter的作用1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。2.完全的可移植性和100% 纯java。3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。5.精心的GUI设计允许快速操作和更精确的计时。6.缓存和离线分析/回放测试结果。1.2、JMeter的高可扩展性1.可链接的取样器允许无限制的测试能力。2.各种负载统计表和可链接的计时器可供选择。3.数据分析和可视化插件提供了很好的可扩展性以及个性化。4.具有提供动态输入到测试的功能(包括Javascript)。5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。二、Jmeter在Linux下的运行测试在windows下使用Jmeter已经司空见惯了,既然Jmeter是基于JAVA的,所以就有完全的可移植性,可以在linux下运行。2.1、安装JDK首先安装JDK,并正确配置环境变量。一、上传并解压jdk压缩包jdk-8u151-linux-x64.tar.gz,建议把软件都安装到/usr/local/下,如/usr/local/jdk1.8.0_151。二、安装java环境1、用vim编辑器打开/etc/profile文件,在文件尾部加入环境变量的定义JAVA_HOME=/usr/local/jdk1.8.0_151/PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH2、重启电脑,或者输入如下命令使配置立即生效source /etc/profile3、查看java版本java -version2.2、安装Jmeter1、将Jmeter的安装包(直接使用windows下的zip压缩包都行)apache-jmeter-4.0.zip上传至Linux的/usr/local/目录下,解压。2、编辑/etc/profile文件,配置Jmeter的环境变量export PATH=/usr/local/apache-jmeter-4.0/bin/:$PATH3、重启电脑,或者输入如下命令使配置立即生效source /etc/profile2.3、启动Jmeter使用命令执行脚本:jmeter -n -t /usr/local/apache-jmeter-4.0/my_threads/sfwl.jmx -l /usr/local/apache-jmeter-4.0/test.jtl &参数说明:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> 要运行的 JMeter 测试脚本文件-l 日志文件 -> 记录结果的文件-r 远程执行 -> 启动远程服务-H 代理主机 -> 设置 JMeter 使用的代理主机-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号注意:如果未设置Jmeter的环境变量则在执行脚本的时候需要检查当前目录是否是jmeter的bin目录下运行示意图: 2.4、查看运行结果1、运行结果存放在运行脚本产生的test.jtl文件中,在linux下可以通过cat、vim等命令查看该文件的内容,在windows下可以通过Notepad++直接打开该文件,如下图:2、使用Jmeter查看(注意:window下安装的Jmeter和JDK要和Linux的保持一致)在windows系统下打开Jmeter,创建一个线程组,在线程组下添加监听器,点击界面上的浏览按钮,将导出的文件test.jtl添加进来即可看到脚本测试的报告,如下图:转自:https://blog.csdn.net/yjclsx/article/details/81740623?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v28-22.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v28-22.nonecase
  • [技术干货] 【转载】深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案
     摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData、Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型。背景我们已经看到,人们更热衷于高效可靠的解决方案,拥有为数据湖提供应对突变和事务处理的能力。在数据湖中,用户基于一组数据生成报告是非常常见的。随着各种类型的数据汇入数据湖,数据的状态不会一层不变。需要改变各种数据的用例包括随时间变化的时序数据、延迟到达的时延数据、平衡实时可用性和回填、状态变化的数据(如CDC)、数据快照、数据清理等,在生成报告时,这些都将被写入/更新在同一组表。由于Hadoop分布式文件系统(HDFS)和对象存储类似于文件系统,因此它们不是为提供事务支持而设计的。在分布式处理环境中实现事务是一个具有挑战性的问题。例如,日常考虑到锁定对存储系统的访问,这会以牺牲整体吞吐量性能为代价。像Apache CarbonData、OpenDelta Lake、Apache Hudi等存储解决方案,通过将这些事务语义和规则推送到文件格式本身或元数据和文件格式组合中,有效地解决了数据湖的ACID需求。很多用户看到这三种主要解决方案时,将陷入两难的境地,在不同情况下不知怎么选择?今天我们对比了三大方案,帮助用户更好的根据自己的场景选择解决方案。Apache HudiApache Hudi是Uber为满足内部数据分析需求而设计的项目。快速upsert/delete和compaction功能可以解决许多实时用例。该项目在Apache社区非常活跃,2020年4月取得了最高项目地位。从Hudi的名字就能看出他的设计目标, Hadoop Upserts Deletes and Incrementals,主要支持Upserts、Deletes和增量数据处理。其关键特性如下:1.文件管理Hudi在DFS上将表组织为basepath下的目录结构。表被划分为分区,这些分区是包含该分区的数据文件的文件夹,类似于Hive表。2.索引Hudi通过索引机制将给定的HoodieKey(记录键+分区路径)一致地映射到文件id,从而提供高效的upserts。3.表类型Hudi支持的表类型如下:写入时复制:使用专有的列文件格式(如parquet)存储数据。在写入时执行同步合并,只需更新版本并重写文件。读取时合并:使用列(如parquet) +行(如Avro)文件格式的组合存储数据。更新记录到增量文件,并随后压缩以同步或异步生成列文件的新版本。4.查询类型Hudi支持三种查询类型:快照查询:查询是在给定的提交或压缩操作之后对表进行快照的请求。利用快照查询时,copy-on-write表类型仅公开最新文件切片中的基/列文件,并保证相同的列查询性能。增量查询:对于写入时复制表,增量查询提供自给定提交或压缩后写入表的新数据,提供更改流以启用增量数据管道。读取优化查询:查询查看指定提交/压缩操作后表的最新快照。只暴露最新文件版本的base/columnar文件,保证列查询性能与非Hudi列表相同。仅在读取表合并时支持5.Hudi工具Hudi由不同的工具组成,用于将不同数据源的数据快速采集到HDFS,作为Hudi建模表,并与Hive元存储进一步同步。工具包括:DeltaStreamer、Hoodie-Spark的Datasource API、HiveSyncTool、HiveIncremental puller。Apache CarbonDataApache CarbonData是三个产品中最早的,由华为贡献给社区,助力华为云产品的数据平台和数据湖解决方案应对PB级负载。这是一个雄心勃勃的项目,将许多能力都集中在一个项目中。除了支持更新、删除、合并操作、流式采集外,它还拥有大量高级功能,如时间序列、物化视图的数据映射、二级索引,并且还被集成到多个AI平台,如Tensorflow。CarbonData没有HoodieKey设计,不强调主键。更新/删除/合并等操作通过优化的粒度连接实现。CarbonData与Spark紧密集成,在CarbonData层中有很多优化,比如数据跳跃、下推等。在查询方面,CarbonData支持Spark、Hive、Flink、TensorFlow、pyTorch和Presto。一些关键特性包括:1.查询加速诸如多级索引、压缩和编码技术等优化旨在提高分析查询的性能,这些查询可能包括过滤器、聚合和用户期望PB级数据的点查询响应时间亚秒级。高级下推优化与Spark深度集成,确保计算在靠近数据处执行,以最小化数据读取、处理、转换和传输的数量。2.ACID:数据一致性没有关于故障的中间数据,按快照隔离工作,分离读取和写入。对数据(查询、IUD【插入更新删除】、索引、数据映射、流式处理)的每个操作均符合ACID标准。支持使用基于列和行的格式进行近实时分析,以平衡分析性能和流式采集以及自动切换。3.一份数据通过集成Spark、Hive、Presto、Flink、Tensorflow、Pytorch等多种引擎。数据湖解决方案现在可以保留一个数据副本。4.各种优化指标其他索引,如二级索引、Bloom、Lucene、Geo-Spatial、实体化视图,可以加速点、文本、聚合、时间序列和Geo空间查询。通过Polygon UDF,CarbonData支持地理空间数据模型。5.更新和删除支持合并、更新和删除操作,以启用诸如更改-数据-捕获、缓慢更改-维(SCD-2)操作等复杂用例。6.高扩展性Scale存储和处理分离,也适用于云架构。分布式索引服务器可以与查询引擎(如spark, presto)一起启动,以避免跨运行重新加载索引,并实现更快和可扩展的查找。Delta【开源】Delta Lake项目于2019年通过Apache License开放源码,是Databricks解决方案的重要组成部分。Delta定位为数据湖存储层,集成流式和批处理,支持更新/删除/合并。为Apache Spark和大数据工作负载提供ACID事务能力。一些关键特性包括:1.ACID事务:Delta Lake将ACID事务带到您的数据湖中。Delta Lake存储一个事务日志,以跟踪对表目录所做的所有提交,以提供ACID事务。它提供可串行化的隔离级别,确保数据在多个用户之间的一致性。2.方案管理与执行Delta Lake利用Spark分布式处理能力处理所有元数据,通过提供指定模式和帮助实施模式的能力,避免不良数据进入数据湖。它通过提供合理的错误消息来防止不良数据进入系统,甚至在数据被集成到数据湖之前就进入系统,从而防止数据损坏。3.数据版本控制和时间旅行将对数据湖中的数据进行版本控制,并提供快照,以便您可以像该快照是系统当前状态一样查询它们。这有助于我们恢复到旧版本的数据湖中进行审计、回滚和类似的操作。4.开放格式Delta Lake中的所有数据都以Apache Parquet格式存储,使得Delta Lake能够利用Parquet本地的高效压缩和编码方案。5.统一的批量流式sink近似实时分析。Delta Lake中的表既是一个批处理表,也是流源和sink,为Lambda架构提供了一个解决方案,但又向前迈进了一步,因为批处理和实时数据都下沉在同一个sink中。与CarbonData类似,Delta不强调主键,因此更新/删除/合并都是基于spark的连接函数实现的。在数据写入方面,Delta和Spark是强绑定关系。与Spark的深度集成可能是最好的特性,事实上,它是唯一一个具有Spark SQL特定命令(例如:MERGE),它还引入了有用的DML,如直接在Spark中更新WHERE或DELETE WHERE。Delta Lake不支持真正的数据血缘关系(即跟踪数据何时以及如何在Delta Lake中复制数据的能力),但是有审计和版本控制(在元数据中存储旧模式)。最后Hudi在IUD性能和读取合并等功能方面具有竞争优势。例如,如果您想知道是否要与Flink流一起使用,那么它目前不是为这样的用例设计的。Hudi Delta Streamer支持流式数据采集。这里的“流式处理”实际上是一个连续的批处理周期。但从本质上讲,这仍不是一种存粹的流式的采集。该社区由Uber提供,并已开放其所有功能。Delta的主要优势之一是它能够与Spark集成,特别是其流批一体化设计。Delta拥有良好的用户API和文档。该社区由Databricks提供,它拥有一个具有附加功能的商用版本。CarbonData是市场上最早的产品,由于物化视图、二级索引等先进的索引,它具有一定的竞争优势,并被集成到各种流/AI引擎中,如Flink、TensorFlow,以及Spark、Presto和Hive。社区由华为提供,所有特性均已开源。随着新版的发布,这三个都在不断填补他们缺失的能力,并可能在未来相互融合或竞争。当然,也可以把重点放在自己的情景上,构建自身优势的门槛。对这些解决方案进行性能比较有助于更好地了解它们的产品。因此,胜负仍是未知之数。下表从多个维度总结了这三者。需要注意的是,本表所列能力仅突出2020年8月底的能力。特性对比表参考信息1. https://github.com/apache/carbondata2. https://github.com/delta-io/delta3. https://github.com/apache/hudi4. https://cwiki.apache.org/confluence/display/CARBONDATA/5. https://cwiki.apache.org/confluence/display/HUDI6. https://hudi.apache.org/7. https://carbondata.apache.org/8. https://delta.io/
  • [技术干货] 每日分享:apache phoenix的基本命令操作
    phoenix作为在hbase上的sql层,被使用的非常多,它提供了sql以及前缀匹配的索引,可以极大的简化hbase的操作,下面这个文章就是介绍phoenix的基本操作https://bbs.huaweicloud.com/blogs/203204
  • [技术干货] 每日分享:Apache CarbonData 2.0 开发实用系列之三:与Presto SQL集成使用
    【内容提要】本文介绍如何使用presto sql查询在spark中已生成的carbondata表原文地址:https://bbs.huaweicloud.com/blogs/196138Apache CarbonData 2.0 开发实用系列之三:与Presto SQL集成使用
总条数:97 到第
上滑加载中