安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

替代ELK

4月20日 霸鲸观投稿
  目录背景ElasticsearchvsClickHouse成本分析环境部署总结
  背景
  saas服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力,帮助业务提升行业竞争力。
  为了完善平台系统能力、我们需要沉淀一套数据体系帮助运营分析活动效果、提升运营能力。
  然而在实际的开发过程中,如果直接部署一套大数据体系,对于使用者来说将是一笔比较大的服务器开销。为此我们选用折中方案完善数据分析能力。
  ElasticsearchvsClickHouse
  ClickHouse是一款高性能列式分布式数据库管理系统,我们对ClickHouse进行了测试,发现有下列优势:
  ClickHouse写入吞吐量大
  单服务器日志写入量在50MB到200MBs,每秒写入超过60w记录数,是ES的5倍以上。
  在ES中比较常见的写Rejected导致数据丢失、写入延迟等问题,在ClickHouse中不容易发生。
  查询速度快
  官方宣称数据在pagecache中,单服务器查询速率大约在230GBs;没在pagecache的情况下,查询速度取决于磁盘的读取速率和数据的压缩率。经测试ClickHouse的查询速度比ES快530倍以上。
  ClickHouse比ES服务器成本更低
  一方面ClickHouse的数据压缩比比ES高,相同数据占用的磁盘空间只有ES的13到130,节省了磁盘空间的同时,也能有效的减少磁盘IO,这也是ClickHouse查询效率更高的原因之一。
  另一方面ClickHouse比ES占用更少的内存,消耗更少的CPU资源。我们预估用ClickHouse处理日志可以将服务器成本降低一半。
  成本分析
  备注:在没有任何折扣的情况下,基于aliyun分析。
  环境部署
  zookeeper集群部署
  yuminstalljava1。8。0openjdkdevel。x8664
  etcprofile配置环境变量
  更新系统时间
  yuminstallntpdate
  ntpdateasia。pool。ntp。org
  mkdirzookeeper
  mkdir。zookeeperdata
  mkdir。zookeeperlogs
  wgetnocheckcertificatehttps:mirrors。tuna。tsinghua。edu。cnapachezookeeperzookeeper3。7。1apachezookeeper3。7。1bin。tar。gz
  tarzvxfapachezookeeper3。7。1bin。tar。gzCusrzookeeper
  exportZOOKEEPERHOMEusrzookeeperapachezookeeper3。7。1bin
  exportPATHZOOKEEPERHOMEbin:PATH
  进入ZooKeeper配置目录
  cdZOOKEEPERHOMEconf
  新建配置文件
  vizoo。cfg
  tickTime2000
  initLimit10
  syncLimit5
  dataDirusrzookeeperdata
  dataLogDirusrzookeeperlogs
  clientPort2181
  server。1zk1:2888:3888
  server。2zk2:2888:3888
  server。3zk3:2888:3888
  在每台服务器上执行,给zookeeper创建myid
  echo1usrzookeeperdatamyid
  echo2usrzookeeperdatamyid
  echo3usrzookeeperdatamyid
  进入ZooKeeperbin目录
  cdZOOKEEPERHOMEbin
  shzkServer。shstart
  Kafka集群部署
  mkdirpusrkafka
  chmod777Rusrkafka
  wgetnocheckcertificatehttps:mirrors。tuna。tsinghua。edu。cnapachekafka3。2。0kafka2。123。2。0。tgz
  tarzvxfkafka2。123。2。0。tgzCusrkafka
  不同的brokerId设置不一样,比如1,2,3
  broker。id1
  listenersPLAINTEXT:ip:9092
  socket。send。buffer。bytes102400
  socket。receive。buffer。bytes102400
  socket。request。max。bytes104857600
  log。dirusrkafkalogs
  num。partitions5
  num。recovery。threads。per。data。dir3
  offsets。topic。replication。factor2
  transaction。state。log。replication。factor3
  transaction。state。log。min。isr3
  log。retention。hours168
  log。segment。bytes1073741824
  log。retention。check。interval。ms300000
  zookeeper。connectzk1:2181,zk2:2181,zk3:2181
  zookeeper。connection。timeout。ms30000
  group。initial。rebalance。delay。ms0
  后台常驻进程启动kafka
  nohupusrkafkakafka2。123。2。0binkafkaserverstart。shusrkafkakafka2。123。2。0configserver。propertiesusrkafkalogskafka。log1
  usrkafkakafka2。123。2。0binkafkaserverstop。sh
  KAFKAHOMEbinkafkatopics。shlistbootstrapserverip:9092
  KAFKAHOMEbinkafkaconsoleconsumer。shbootstrapserverip:9092topictestfrombeginning
  KAFKAHOMEbinkafkatopics。shcreatebootstrapserverip:9092replicationfactor2partitions3topicxxxdata
  FileBeat部署
  sudorpmimporthttps:packages。elastic。coGPGKEYelasticsearch
  Createafilewitha。repoextension(forexample,elastic。repo)inyouretcyum。repos。ddirectoryandaddthefollowinglines:
  在etcyum。repos。d目录下创建elastic。repo
  〔elastic8。x〕
  nameElasticrepositoryfor8。xpackages
  baseurlhttps:artifacts。elastic。copackages8。xyum
  gpgcheck1
  gpgkeyhttps:artifacts。elastic。coGPGKEYelasticsearch
  enabled1
  autorefresh1
  typerpmmd
  yuminstallfilebeat
  systemctlenablefilebeat
  chkconfigaddfilebeat
  FileBeat配置文件说明,坑点1(需设置keysunderroot:true)。如果不设置kafka的消息字段如下:
  文件目录:etcfilebeatfilebeat。yml
  filebeat。inputs:
  type:log
  enabled:true
  paths:
  rootlogsxxxinner。log
  json:
  如果不设置该索性,所有的数据都存储在message里面,这样设置以后数据会平铺。
  keysunderroot:true
  output。kafka:
  hosts:〔kafka1:9092,kafka2:9092,kafka3:9092〕
  topic:xxxdataclickhouse
  partition。roundrobin:
  reachableonly:false
  requiredacks:1
  compression:gzip
  processors:
  剔除filebeat无效的字段数据
  dropfields:
  fields:〔input,agent,ecs,log,metadata,timestamp〕
  ignoremissing:false
  nohup。filebeatecetcfilebeatfilebeat。ymluserfilebeatfilebeat。log
  输出到filebeat。log文件中,方便排查
  clickhouse部署
  检查当前CPU是否支持SSE4。2,如果不支持,需要通过源代码编译构建
  grepqsse42proccpuinfoechoSSE4。2supportedechoSSE4。2notsupported
  返回SSE4。2supported表示支持,返回SSE4。2notsupported表示不支持
  创建数据保存目录,将它创建到大容量磁盘挂载的路径
  mkdirpdataclickhouse
  修改etchosts文件,添加clickhouse节点
  举例:
  10。190。85。92bigdataclickhouse01
  10。190。85。93bigdataclickhouse02
  服务器性能参数设置:
  cpu频率调节,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节,性能最好
  echoperformanceteesysdevicessystemcpucpucpufreqscalinggovernor
  内存调节,不要禁用overcommit
  echo0teeprocsysvmovercommitmemory
  始终禁用透明大页(transparenthugepages)。它会干扰内存分配器,从而导致显着的性能下降
  echoneverteesyskernelmmtransparenthugepageenabled
  首先,需要添加官方存储库:
  yuminstallyumutils
  rpmimport
  yumconfigmanageraddrepo
  查看clickhouse可安装的版本:
  yumlistgrepclickhouse
  运行安装命令:
  yumyinstallclickhouseserverclickhouseclient
  修改etcclickhouseserverconfig。xml配置文件,修改日志级别为information,默认是trace
  information
  执行日志所在目录:
  正常日志
  varlogclickhouseserverclickhouseserver。log
  异常错误日志
  varlogclickhouseserverclickhouseserver。err。log
  查看安装的clickhouse版本:
  clickhouseserverversion
  clickhouseclientpassword
  sudoclickhousestop
  sudoclickhousetart
  sudoclickhousestart
  clickhouse部署过程中遇到的一些问题如下:
  clickhouse创建kafka引擎表:
  CREATETABLEdefault。kafkaclickhouseinnerlogONCLUSTERclickhousecluster(
  loguuidString,
  datepartitionUInt32,
  eventnameString,
  activitynameString,
  activitytypeString,
  activityidUInt16
  )ENGINEKafkaSETTINGS
  kafkabrokerlistkafka1:9092,kafka2:9092,kafka3:9092,
  kafkatopiclistdataclickhouse,
  kafkagroupnameclickhousexxx,
  kafkaformatJSONEachRow,
  kafkarowdelimiter,
  kafkanumconsumers1;
  问题1:clikhouse客户端无法查询kafka引擎表
  Directselectisnotallowed。Toenableusesettingstreamlikeengineallowdirectselect。(QUERYNOTALLOWED)(version22。5。2。53(officialbuild))
  解决方案:
  需要在clickhouseclient创建加上streamlikeengineallowdirectselect1
  clickhouseclientstreamlikeengineallowdirectselect1passwordxxxxx
  clickhouse创建本地节点表
  问题2:无法开启本地表macro
  Code:62。DB::Exception:Therewasanerroron〔10。74。244。57:9000〕:Code:62。DB::Exception:Nomacroshardinconfigwhileprocessingsubstitutionsinclickhousetablesdefaultbiinnerloglocal{shard}at50ormacroisnotsupportedhere。(SYNTAXERROR)(version22。5。2。53(officialbuild))。(SYNTAXERROR)(version22。5。2。53(officialbuild))
  创建本地表(使用复制去重表引擎)
  createtabledefault。biinnerloglocalONCLUSTERclickhousecluster(
  loguuidString,
  datepartitionUInt32,
  eventnameString,
  activitynameString,
  creditsbringInt16,
  activitytypeString,
  activityidUInt16
  )ENGINEReplicatedReplacingMergeTree(clickhousetablesdefaultbiinnerloglocal{shard},{replica})
  PARTITIONBYdatepartition
  ORDERBY(eventname,datepartition,loguuid)
  SETTINGSindexgranularity8192;
  解决方案:在不同的clickhouse节点上配置不同的shard,每一个节点的shard名称不能一致。
  macros
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282shard01spanshardspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282replicaspanexample01011spanreplicaspan
  spanmacrosspanspan
  问题3:clickhouse中节点数据已经存在
  Code:253。DB::Exception:Therewasanerroron:Code:253。DB::Exception:Replicaclickhousetablesdefaultbiinnerloglocal01replicasexample01011alreadyexists。(REPLICAISALREADYEXIST)(version22。5。2。53(officialbuild))。(REPLICAISALREADYEXIST)(version22。5。2。53(officialbuild))
  解决方案:进入zookeeper客户端删除相关节点,然后再重新创建ReplicatedReplacingMergeTree表。这样可以保障每一个clickhouse节点都会去消费kafkapartition的数据。
  clickhouse创建集群表
  创建分布式表(根据loguuid对数据进行分发,相同的loguuid会发送到同一个shard分片上,用于后续合并时的数据去重):
  CREATETABLEdefault。biinnerlogallONCLUSTERclickhouseclusterASdefault。biinnerloglocal
  ENGINEDistributed(clickhousecluster,default,biinnerloglocal,xxHash32(loguuid));
  问题4:分布式集群表无法查询
  Code:516。DB::Exception:Receivedfrom10。74。244。57:9000。DB::Exception:default:Authenticationfailed:passwordisincorrectorthereisnouserwithsuchname。(AUTHENTICATIONFAILED)(version22。5。2。53(officialbuild))
  解决方案:
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282remoteservers
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282clickhouseclusterspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282shardspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282internalreplicationspantruespaninternalreplicationspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282replicaspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282hostspanip1spanhostspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282portspan9000spanportspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282userspandefaultspanuserspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282passwordspanxxxxspanpasswordspan
  spanreplicaspan
  spanshardspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282shardspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282internalreplicationspantruespaninternalreplicationspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282replicaspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282hostspanip2spanhostspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282portspan9000spanportspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282userspandefaultspanuserspan
  spanstylecolor:F82375;ttdarkmodecolor:FF3282;classdatacolorttdarkmodeff3282passwordspanxxxxspanpasswordspan
  spanreplicaspan
  spanshardspan
  spanclickhouseclusterspan
  spanremoteserversspanspan
  clickhouse创建物化视图
  创建物化视图,把Kafka消费表消费的数据同步到ClickHouse分布式表。
  CREATEMATERIALIZEDVIEWdefault。viewbiinnerlogONCLUSTERclickhouseclusterTOdefault。biinnerlogallAS
  SELECT
  loguuid,
  datepartition,
  eventname,
  activityname,
  creditsbring,
  activitytype,
  activityid
  FROMdefault。
  小结:功夫不负有心人,解决完以上所有的问题。数据流转通了!本文所有组件都是比较新的版本,所以过程中问题的解决基本都是官方文档或操作手册一步一步的解决。
  总结一句话:遇到问题去官方文档或help去尝试解决,慢慢的你就会升华。
  总结
  整个部署的过程踩了不少坑,尤其是filebeatyml的参数设置和clickhouse的配置说明。
  很久没有更新博客了,经常看到博客35岁以后怎么办的问题。说实话我自己也没想好以后怎么办,核心还是持续的学习输出。不断的构建自己的护城河,不管是技术专家、业务专家、架构、管理等。
  个人建议如果能持续写代码就奋战在一线,管理彻底与公司绑定。除非你是有名的大厂,这另外看。
  如果所在的公司缺乏较大的行业影响力,个人感觉可以奋战在一线,未来选择新的工作。考量更多的还是行业影响、商业sense、技术架构能力。现在的我已35,从容的面对每一天。
投诉 评论 转载

生化级性能防护达氏新旗舰空气净化器DAC800上市众所周知,室内的空气质量比室外更堪忧。常见的灰尘尘螨、厨房油烟、家装甲醛、TVOC又或者是无意间的生成的二手烟,它们正悄无声息的影响着人们的健康,同时随着全球疫情进入到常态化阶……A股可能比茅台还有发展潜力的4家无人驾驶企业,未来可期林志颖驾驶特斯拉遭遇车祸每天都挂在热搜,群众都在等待一个完整的事情经过,特斯拉车辆行驶过程中出现刹车失灵导致车祸在国内出现多起,不由让群众联想此次车祸是否依旧是刹车失灵所致。……高圆圆的美永不淘汰,这么大年纪也并不影响她的颜值,太高级了哈喽,大家好,我是biu时尚,很高兴又和大家分享明星时尚与搭配技巧!希望我的文章让你对时尚更加的感兴趣,让本身就好看的你,更加的有魅力!气质是很多女人都希望得到的,但是气……周末约上三两好友,聚餐做这六道下饭菜,都夸你厨艺棒,上桌秒光大家好这里是香姐说美食,每天分享好吃的家常菜。今天是周末,是上班族难得的休息时间,应该约上三两好友,再来几道好吃的下饭菜,不可辜负这美好的时光啊!今天推荐六款好吃的下饭菜,学会……万亿储能的掘金潮2021年以来,随着新能源汽车行业整体的崛起,与之相关的储能行业也备受众人瞩目。来源探客深科技作者尹太白来源公众号储能为什么重要?各行各业的人对此或许有……老年之后,别和老伴儿走的太近,两个65岁老人说出实话前言:老年之后我们的生活想要幸福,必须认真的考虑,年轻的时候两个人在一起习惯了,很多人都说老年之后不能够分开,其实我们需要在不同的时候保持不同的距离,如果一直在一起的话,……端午休闲之余姚裘岙中村一日游2022年6月3日,星期五,端午小长假第一天,我们计划去余姚一日游。余姚作为曾经绍兴府的一员,现在的近邻,我们多次去游玩过,还未去过的地方已很少了。经过挑选,我们把兰山村和裘岙……安徽人喝酒怪象不碰古井贡,不喝口子窖,反而更偏爱4款廉价酒安徽人喝酒怪象:不碰古井贡,不喝口子窖,反而更偏爱4款廉价酒俗话说的好:大江南北喝不过安徽!论酒量,安徽人其实不输任何省份。尤其是安徽阜阳,酒量可以说没有上限,甚至……扬科维奇观战大连人,同行大美女身份揭秘,万达实德球员看着长大扬科维奇现场观战大连人PK国安,同行大美女身份揭秘,万达实德球员看着长大2022年中超联赛第17轮补赛,以压着打惊艳中超的大连人坐镇普湾体育场,面对拥有众多新老国脚的御林……还是长手打短手?TheShy排位状态不佳分段仅为钻1各位观众老爷们好,我是小皮,皮的雅痞。快乐游戏,快乐上单还有一周左右的时间,2022英雄联盟LPL春季赛就要正式开打了,除极个别还在隔离的韩援以外,绝大多数选手都已……以后大白菜就这样吃了,加5个鸡蛋,出锅连汁都不剩,鲜香味十足三餐美味,四季幸福,大家好!今天,用几个鸡蛋和一个白菜跟大家分享一道不一样的美食,做好后非常圆润好看,吃起来肉香十足,而且有肉有菜还有蛋,真的是非常营养。感兴趣的朋友快点来看看……替代ELK目录背景ElasticsearchvsClickHouse成本分析环境部署总结背景saas服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力,……
抗癌斗士,滴滴创始元老柳青,是如何把一手好牌给打烂的下周市场热点分析地产大亨潘石屹16年狂揽565亿,对美豪捐6亿后又想家灯厂出品必属精品!雷蛇6400DPI鼠标85元中国企业投资印度,真的需要三思而行北京冬奥会闭幕式高亭宇为什么扛着徐梦桃?听听网友怎么说C语言要达到什么水平才能从事单片机工作口碑再度翻车?华晨宇的热搜,让王牌陷入尴尬的境地真就闭眼冲!荣耀80GT只需这六大看点,就可以直接买了CES2023观察经济衰退阴霾下,芯片巨头寻增量,突破性技术跌宕2022年影响世界的十大科技事件浅谈mqtt协议与终端监测设备结合异地恋分手如何更好的挽回?读书的启示的优秀作文经典面试题解答:什么是好产品?移动的怎么查手机号码定位(手机位置怎么查踪迹)小有学理财(2):理财种类繁多,如何选择适。。。浪姐二公5人出局,那英组第一李菲儿组逆袭,阿兰宣璐意难平年两会安保工作方案这也是幸福李米的猜想千万不要和恋爱脑谈恋爱预算3K能不能配一台中上游的游戏电脑?如何挑选眼镜框七日蔬菜瘦身汤让你越喝越苗条

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利