• [ElasticSea...] 【FusionInsight-es】测试样例代码问题
    【功能模块】测试样例代码问题【操作步骤&问题现象】1、linux上跑出现问题2,需要替换成自己的索引吗?如果是 样例代码中是不是都要替换【截图信息】测试样例代码问题
  • [二次开发] HD 6.5.1.7 Elasticsearch  用java代码查询出来的结果是科学计数法,有没有什么方法让直接返回数值型,不
    【操作步骤&问题现象】head插件查询出来的结果不以科学记数法表示,java代码查询的聚合结果是科学记数法索引中原字段是double目前只想到一个一个通过DecimalFormat解析结果做格式化处理,但这样太麻烦。ES中是否有直接指定格式返回的方式?还有比较奇怪的是数值只有 266144704 也不算大,但还以科学记数法显示了。
  • [问题求助] 【鲲鹏920 robox】【android 容器 opengles 2.0】编译的镜像是否支持opengl es 3.0
    环境:运行的服务端内核和编译android镜像都没有打exagear补丁在android容器中执行opengl es3.0编写的应用程序会失败,但是opengl es2.0的就可以正常运行。检测到android系统目前是opengl es 2.0的版本。请问robox是否可以支持opengl es 3.0?还有exagear补丁有适配完成吗?
  • [技术干货] ES写入调优总结
    一、项目背景在**项目中,客户测试大数据场景,在ES写入性能时,使用Jmeter对ES的_bulk接口进行压测,发现Arm的写入TPS性能为x86的70%-80%,低了30%左右。客户已根据BoostKit大数据ElasticSearch调优套件中的调优手段进行调优,包括OS、BIOS和组件的调优,没有明显的效果。 boostkit大数据ElasticSearch调优指导:https://support.huaweicloud.com/tngg-kunpengbds/kunpengelasticsearchhdp_05_0017.html1.1环境配置信息硬件配置:鲲鹏X86 – IntelCPU2* **2* ** v422Cores@2.2GHz内存16*32GB 2933MHz8*32GB 2400MHz磁盘2*1.2T SAS HDD10*960GB SSD1.6T SSD 软件配置:版本OSCentOS 7.6ELK7.4.2JDK毕昇JDK 1.8.0 b272测试功能Jmeter目标软件客户的自研软件1.2 性能对比在客户环境中,ES初次的写入测试中,Arm的写入TPS性能为x86的70%-80%,低了30%左右。单线程批量数连接数机型响应时间(毫秒)ES写入TPSTPS鲲鹏/X86CPU200010鲲鹏12477500-8250070%34%Intel87110000-12000031%20鲲鹏188102000-11000077%66%Intel119130000-14500060%30鲲鹏268110000-11400080%84%Intel213130000-15000075%40鲲鹏355110000-11600081%85%Intel295130000-15000075% 二、调优分析2.1硬件对齐对齐磁盘,包括型号规格,大小,raid和FIO性能测试对比等x86 用的惠普SATA SSD,4块盘组的raid10鲲鹏用的三星pm883 SATA SSD,10块盘组raid10根据磁盘fio测试结果,X86 的随机读略强于arm,arm和x86在4k的写入性能基本持平。对比CPU算力SPECCPU 2006  x86 **   v4 VS kunpeng **   x86:intrate 1700, fprate 1070, intspeed 71, fpspeed 108arm: intrate 1550, fprate 1450, intspeed 27, fpspeed 27arm的单核和多核能力均不如x86,单核算力是X86的38%,多核整机算力是X86的91%2.2 CPU、内存、IO和网络的基础资源消耗CPU利用率达85%,属于正常的负载。软中断低,瓶颈不在网络。磁盘的利用率10%左右,写的速度200-500M/S,写入速度大,瓶颈也不在IO。同时,发现只有一个numa0在工作,后来跟客户确认,是关闭numa导致,后来开启numa后恢复4numa运行,但是对性能没提升效果。2.2JAVA热点函数分析热点函数indexShard, ElasticsearchConcurrentMergeScheduler,主要是在索引index和merge上。系默认每个分片会有四个线程用于Merge操作,假设我们有500个分片,那么Merge可以使用的CPU核数达到了2000个,在一个数据写入非常频繁的系统,大部分CPU可能都会被Merge给消耗掉。所以并不是分片越多越好,分片越多,那么用于Bulk的CPU就越多。通过热点函数分析,需要对index和merge的配置进行调整。  三、调优过程和结果3.1多实例+绑核使用numactl –N –m 分别对各实例进行numa nodes和内存进行一对一绑核,cpu利用率有明显的降低。整体性能相对不绑核有20%以上的提升。3实例  不绑核 总11万-13.5万 3实例  160链接  15万-17万绑核后,3实例绑核有36% 、26%提升 4实例  160链接:15-17万   80链接:15万-19.5万 50链接:16万-19万 4实例不绑核  50/160链接,11万-13万 绑核后,4实例绑核有36% ,46%提升。 3.2索引大小,线程池优化索引大小,线程池优化,在elasticsearch.yml 上添加以下配置,有效果indices.memory.index_buffer_size,indices.memory.min_index_buffer_size已经索引好的文档会先存放在内存缓存中,等待被写到到段(segment)中。缓存满的时候会触发段刷盘(吃i/o和cpu的操作)。默认最小缓存大小为48m,不太够,最大为堆内存的10%,可适当调大。thread_pool.search.queue_size:线程写的队列数40链接  总shards:17万,单shard:8.5万3.3索引优化refresh_interval:默认为“1s”,即每秒都会强制生成1个新的segments文件,增大索引刷新时间,可以生成更大的segments文件,有效降低IO并减少segments merge的压力。如果只是单纯导入数据,不需要做实时查询,可以把refresh禁用(即设置index.refresh_interval为-1),并设置“index.number_of_replicas”为“0”,当然这样设置会有数据丢失风险。等到数据完成导入后,再把参数设置为合适的值。测试对比过number_of_replicas为0和1,性能相差不大。Translog.flush_threshold_size: 设置异步刷盘事务日志文件,ranslog大小,增大translog flush大小,可提升性能。 3实例 没做索引优化前 8万-8.6万3实例 索引优化后  8.5万-9.3万 3.4Merge优化index.merge.policy.max_merge_at_once:一次最多只merge多少个segments,默认是10。index.merge.policy.floor_segment:Elasticsearch避免产生很小的segment,小于这个阀值的所有的非常小的segment都会merge直到达到这个floor的size,默认是2MB。index.merge.policy.max_merged_segment:超过多大size的segment不会再做merge,默认是5g。index.merge.policy.segment_per_tier:默认为10,表示每个tier允许的segment个数,注意这个值要大于等于“index.merge.policy.max_merge_at_once”值,否则这个值会先于最大可操作数到达,就会立刻做merge,这样会造成频繁merge;index.merge.scheduler.max_thread_count:设置段合并的线程数量,段合并的计算量庞大,而且还要吃掉大量磁盘I/O。适当增大段合并线程数,可提升段合并性能。3实例 Merge优化   9万-10.1万 4实例 index和merge优化后 50链接 最高10.4万
  • [问题求助] 【Device BO】【设备信息同步到ES】同步到ES的定时任务执行报错:对象'Connector'中不存在记录''...
    【功能模块】【Device BO】【操作步骤&问题现象】1、ABC-管理-定时任务,找到设备的同步ES任务:2、查看任务执行历史:3. 找到任务对应的服务编排,手动执行,运行结果同样也是“对象'Connector'中不存在记录'', 或者用户无权操作该记录”:【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [二次开发] 【Flink产品】【Flink sink ES】flink 连接器 sink数据到ES
    【功能模块】Flink DataStream 数据sink到带有用户名密码的验证的ES集群中报错。【操作步骤&问题现象】1、使用开源的flink-connector-elasticsearch6_2.11 的jar包2、SunCertPathBuilderException: unable to find valid certification path to requested target3、在es客户端那 提示找不到有效的证书路径  我觉得应该是协议错误 我们集群使用curl 方式操作es 需要指定  --tlsv1.2【求助】1.是不是不能使用开源的flink 连接器 sink 到es2.有没有FI集群sink 到ES的样例demo 可以参考一下3.或者帮忙提醒一下从哪里设置tlsv1.2协议  【日志信息】(可选,上传日志内容或者附件)Caused by: org.elasticsearch.client.ResponseException: method [HEAD], host [https://10.28.132.195:24100], URI [/], status line [HTTP/1.1 403 Forbidden]
  • [基础组件] FI的ES如何使用
    【功能模块】EsMaster节点信息如下集群内和集群外使用一下命令都访问不成功:
  • [问题求助] 测试es时间03月26日 02:25
    测试es时间03月26日 02:25
  • [版务处理] 测试es测试es测试es测试es测试es测试es
    测试es测试es测试es测试es测试es测试es测试es测试es测试es
  • [问题求助] 【abc产品】【ES搜索功能】搜索引擎服务器异常 租户:ncec1234
    【功能模块】es搜索引擎租户:ncec1234【操作步骤&问题现象】1、点击开发界面的全局搜索,报错如下调用搜索引擎服务器异常,elastic: Error 400 (Bad Request): Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [6191]/[3000] maximum shards open; [type=illegal_argument_exception]【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [基础组件] ElasticSearch 单节点入库性能测试
    【验收目的】 验证Elasticsearch单节点入库性能指标 【前置条件】 1.集群已经安装完成并正常运行。 2.每个实例分配内存30G,且单节点所有实例内存不超过节点内存的一半(比如节点为128内存,则部署2个实例)。 3.客户端安装在管理控制节点(例安装目录为“/opt/client"),客户端数量与数据节点数量保持一致。 4.获取相应测试工具,解压后对应目录获取Elasticsearch性能工具esarrayGA.rar,解压esarrayGA.rar,解压后将esarrayGA上传到所有客户端节点 (例如目录为“/opt/client",其中用于性能测试的jar包为es-sec-1K.jar、es-sec-5K.jar)。 【测试过程】 1.在Elasticsearch集群创建索引,每个客户端创建1个索引,如:myindex-001、myindex-002和myindex-003,设置索引mapping信息,mapping设 置请参考附件esperf-mapping.txt , 根据不同性能指标创建索引时修改esperf-mapping.txt文件中对应参数。 number_of_replicas:副本数 enabled:是否存储原始数据。 2.在FusionInsight Manager界面选择“系统 > 权限 > 用户 > 添加用户”,创建用户estest,加入elasticsearch、supergroup组,主组为 supergroup。 3.使用root用户登录客户端所在节点,进入客户端安装目录执行 cd /opt/client source bigdata_env kinit estest,初始化及修改密码 4.“系统 > 权限 > 用户 > 更多”,下载estest用户凭证。 5.解压用户凭证,上传至“/opt/client/esarrayGA/conf” 6.修改测试工具esarrayGA的配置文件/opt/esarrayGA/conf/espara.properties。 isindex:设置为1,表示写入索引 httpUrl:指定实例IP和端口及索引信息(IP和端口,每个节点选择一个即可) index:写入的索引名称,各客户端节点中工具分别设置为myindex-001到myindex-003 issecurity:设置为1,表示为安全模式 threadNum:并发线程数,可以逐步增加线程数,工具运行后CPU达到100%为最佳 processRecordNum:写入的索引数量,设置为2亿 其他设置不需要修改。 7.修改测试工具esarrayGA的配置文件/opt/esarrayGA/conf/jaas.conf principal:用户名,修改为estest@HADOOP.COM keyTab:用户凭证目录,修改为"/opt/esarrayGA/conf/user.keytab" 8.在每个客户端节点同时执行java -jar es-sec-1K.jar或java -jar es-sec-5K.jar启动工具写入,数据写入完成后会输出写入耗时。 9.写入完成后,执行,统计3个索引的store.size,记录写入索引的总大小(X.X.X.X修改为集群的Elasticsearch节点IP)。 curl --tlsv1.2 --negotiate -k -v -u: -XGET https://X.X.X.X:24102/_cat/indices?v 10.单节点文件大小写入速率(MB/Sec/Node):所有索引写入数据大小/客户端写入时间的平均值/数据节点数。 11.单节点文件数写入速率(doc/Sec/Node):所有索引写入数据总条数/客户端写入时间平均值/数据节点数。 【测试结果】 1.成功写入数据,记录写入耗时 2.成功查看写入索引总的大小 curl -XGET --tlsv1.2 --negotiate -k -u : 'https://10.24.102.14:24100/_cat/indices?v' (https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202102/23/110423tiibgjvw5qmln5dn.png) 3.计算得到Elasticsearch单节点文件大小写入速率。 所有索引写入数据大小/客户端写入时间的平均值/数据节点数: 3.3 x 1024 x 1024 / 8430.008 / 6 = 68.4123M/Sec 4.计算得到Elasticsearch单节点文件数写入速率。 600000000/8430.008/6 = 11862.385 doc/Sec
  • [赋能学习] pyspark数据处理完毕后写入ES案例
    ## 一、背景 版本:FusionInsight HD 安全集群,版本6.5.1 或者 8.0.2 场景:数据保存在HDFS上,使用python语言开发spark应用,数据处理完毕后写入ElasticSearch 如下步骤使用的 elasticsearch-spark-20_2.11-*.jar 获取链接如下 https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch-spark-20 其中 FI 6.5.1版本下载 6.7.1,FI 8.0.2版本下载 7.6.0 说明:如下使用都是python3.7.8,其他python版本未验证 ## 二、ES单独关闭安全场景 关闭方法:服务端修改参数 ELASTICSEARCH_SECURITY_ENABLE 为 false,后重启ES服务​ Spark客户端已安装部署到/opt/client目录,Demo步骤如下,都在客户端部署节点上执行 1. 创建测试目录,例如 /home/haosuwei/spark_to_es 2. 将 elasticsearch-spark-20_2.11-*.jar 上传到该目录 3. 将 test.txt文件上传到HDFS的/tmp/haosuwei目录,其中test.txt文件内容参考如下 ``` 11,aa 2222,bbb ``` 4. 创建import.py文件,内容参考如下 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/20342977qf3ylcztrmc34h.png) 5. 将提交spark认证用户的秘钥文件user.keytab上传到该目录 6. 提交任务 ``` spark-submit --master yarn --deploy-mode client --keytab ./user.keytab --principal developuser --jars elasticsearch-spark-20_2.11-7.6.0.jar import.py ``` ## 三、ES仍为安全模式 检查服务端修改参数 ELASTICSEARCH_SECURITY_ENABLE 为 true 其他步骤同上,唯一不同点在于python文件,修改部分参考如下 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/204322h7jlisfdwtza7nto.png) 通过curl命令检查basic认证参考如下: ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202012/21/204536rq2nxun4vbndile3.png)
  • [赋能学习] MRS3.0.2版本 二次开发(24/27): Spark读写ElasticSearch样例
    # 视频在本帖二楼 ## 一、Spark简介 Spark是分布式批处理框架,提供分析挖掘与迭代式内存计算能力,支持多种语言(Scala/Java/Python)的应用开发。 适用以下场景: - 数据处理(Data Processing):可以用来快速处理数据,兼具容错性和可扩展性。 - 迭代计算(Iterative Computation):支持迭代计算,有效应对多步的数据处理逻辑。 - 数据挖掘(Data Mining):在海量数据基础上进行复杂的挖掘分析,可支持各种数据挖掘和机器学习算法。 - 流式处理(Streaming Processing):支持秒级延迟的流式处理,可支持多种外部数据源。 - 查询分析(Query Analysis):支持标准SQL查询分析,同时提供DSL(DataFrame), 并支持多种外部输入。 ## 二、样例背景 在Spark应用中,用户可以通过Elasticsearch的原生接口,以及elasticsearch-spark工具提供的接口,实现索引的创建、查询、删除等操作。 ## 三、样例调试 1. 前提:Linux环境有安装集群客户端,环境准备,参考第一课 2. 数据规划 首先需要把数据文件放置在HDFS系统里。 1. 获取测试数据文件,获取样例代码data目录中的people.json文件; 2. 在HDFS上建立一个文件夹“spark-on-es”,并将上一步得到的people.json文件上传到hdfs的/user/spark-on-es目录下面,命令如下: 1. 在HDFS客户端,执行如下命令获取安全认证。 cd /opt/hadoopclient kinit 用于认证的业务用户> 2. 在Linux系统HDFS客户端使用命令hadoop fs -mkdir /user/spark-on-es(hdfs dfs命令有同样的作用),创建对应目录。 3. 在Linux系统HDFS客户端使用命令hadoop fs -put people.json /user/spark-on-es,上传数据文件。 3. 比对“本地时间和Linux机器时间”与集群时间误都不能超过5分钟 4. 检查linux环境的JDK版本为1.8 5. 配置linux环境的/etc/hosts文件 6. 检查 C:\Windows\System32\drivers\etc\hosts文件中是否包含所有集群节点的域名IP映射信息 7. 在IDEA打开样例代码的SparkOnEsJavaExample目录,检查SDK配置 8. 默认自动加载依赖,如未加载,则打开后选中pom.xml文件,右键点击“Add As Maven Project”后等待项目自动将依赖下载完毕 9. 在Linux环境新建目录,例如“/opt/spark-on-es/” 10. 从Manager界面下载用户认证凭据后,解压缩获取秘钥文件user.keytab和krb5.conf,将这两个文件放到Linux环境新建的目录中例如“/opt/spark-on-es” 11. 修改样例代码conf中esParams.properties文件,可以参考es客户端下es-rest-client-example.properties文件 需要修改用户名principal与密码userPassword,其他项可参考es-rest-client-example.properties文件 12. 在IDEA主页面,选择“View->Tool Windows->Maven”打开“Maven”工具窗口。 13. 在Maven工具窗口,选择clean生命周期,执行Maven构建过程。 14. 在Maven工具窗口,选择package生命周期,执行Maven构建过程。 15. 从IDEA项目目录下的target文件夹中获取到Jar包,拷贝到Spark运行环境下(即Spark客户端),如“/opt/spark-on-es”。 16. 通过如下maven指令构建样例工程依赖jar包到lib目录,注意--settings后客户使用自己的本地目录 mvn dependency:copy-dependencies -DoutputDirectory=lib --settings D:\tools\apache-maven-3.6.3\conf\settings.xml 17. 在“/opt/spark-on-es”目录下新建子目录"libs",将步骤16所打的jar包中如下包拷贝到子目录"libs"下 - elasticsearch-7.6.0-hw-ei.jar - elasticsearch-core-7.6.0-hw-ei.jar - elasticsearch-rest-client-7.6.0-hw-ei.jar - elasticsearch-rest-high-level-client-7.6.0-hw-ei.jar - elasticsearch-spark-20_2.11-7.6.0.jar - elasticsearch-x-content-7.6.0-hw-ei.jar - lang-mustache-client-7.6.0-hw-ei.jar - log4j-api-2.12.0.jar - log4j-core-2.12.0.jar - lucene-core-8.4.0-hw-ei.jar - rank-eval-client-7.6.0-hw-ei.jar 18. 从IDEA项目conf目录下esParams.properties拷贝到“/opt/spark-on-es” 19. kinit认证后,运行命令分别如下(类名与文件名等请与实际代码保持一致,此处仅为示例) 1. client模式运行任务 ``` cd /opt/spark-on-es spark-submit --class com.huawei.bigdata.spark.examples.SparkOnEs --master yarn --deploy-mode client --conf spark.driver.userClassPathFirst=true --jars $(files=(/opt/spark-on-es/libs/*.jar); IFS=,; echo "${files<li>}") ./SparkOnEs-1.0.jar ``` 其中“/opt/spark-on-es/libs/”是外部依赖的jar包路径。 2. cluster模式运行任务 ``` cd /opt/spark-on-es spark-submit --class com.huawei.bigdata.spark.examples.SparkOnEs --master yarn --deploy-mode cluster --conf spark.driver.userClassPathFirst=true --jars $(files=(/opt/spark-on-es/libs/*.jar); IFS=,; echo "${files[*]}") --files ./user.keytab,./krb5.conf,./esParams.properties ./SparkOnEs-1.0.jar ``` 其中--files参数用来指定程序运行时需要的配置文件,多个文件要以半角逗号“,”分隔。 20. 查询Elasticsearch中的数据。 ``` # kinit认证后,查看Elasticsearch中的index: curl -XGET --tlsv1.2 --negotiate -k -u : 'https://10.10.10.11:24100/_cat/indices?v' # 通过下述命令对people索引中的数据进行范围查询: curl -XPOST --tlsv1.2 --negotiate -k -u : 'https://10.10.10.11:24100/people/_search?pretty' -H 'Content-Type:application/json' -d '{ "query": { "range": { "createdTime": {"gte": "2010-01-01T00:00:00Z", "lt": "2015-12-31T23:59:59Z"} } }}' ``` 21. 查询HDFS中的文件。 ``` # kinit认证后,查看保存到HDFS中的分组结果文件: hdfs dfs -ls /user/spark-on-es/group-result # 查看某个文件中的内容,比如查看文件part-00001: hdfs dfs -cat /user/spark-on-es/group-result/part-00001 ``` ## 四、问题互动渠道 FusonInsight 论坛入口 https://bbs.huaweicloud.com/forum/forum-1103-1.html
  • [技术干货] MySQL+NodejS+ES的全文搜索实战
    一、Elasticsearch单独使用1、Elasticsearch安装(建议Linux系统):步骤一:安装较新版本的Java,确保环境变量配置正确,JDK版本不能低于1.7_55。步骤二:安装Elasticsearch:https://www.elastic.co/cn/downloads/elasticsearch    Linux版本$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-linux-x86_64.tar.gz $ tar -xzf elasticsearch-7.10.0-linux-x86_64.tar.gz    windows版本:官网下载windows版本安装包,解压。2、Elasticsearch启动$ cd elasticsearch-7.10.0/$ ./bin/elasticsearch (Linux版本) $ .\bin\elasticsearch.bat (windows版本)运行成功后,浏览器访问http://localhost:9200/?pretty页面出现如下信息意味着启动成功了!!!或者打开另一个终端 执行:curl 'http://localhost:9200/?pretty' ,与上一种方式启动成功信息显示一致。(windows可以安装cURL)。可以搭配图形用户界面一起使用,安装kibana(https://www.elastic.co/guide/en/kibana/4.6/index.html), 与 elasticsearch 版本对应即可。二、Node连接MySQL1、安装ES模块$ npm install elasticsearch --save2、安装MySQL驱动$ npm install mysql --save3、这里的框架使用的是koa,先写配置文件,代码如下:4、插入数据,测试数据使用 [Faker-zh-cn.js](https://github.com/layerssss/Faker-zh-cn.js) 生成。5、使用ES全文高亮搜索,代码如下:
  • [问题求助] elasticsearch7.9.0版本存在,kibana7.9.0确木有找到
总条数:153 到第
上滑加载中