Clickhouse源码研究(一)

发布于 1 个月前 作者 Max68-Tan 265 次浏览 来自 分享
  1. 源码准备git clone --recursive git@github.com:yandex/ClickHouse.git 也可以git pull --recurse-submodules,总之是把所有的submodules都pull下来。2. Build 可以按照文档https://clickhouse.yandex/docs/en/development/build_osx/的描述操作,如下:mkdir build cd build cmake … -DCMAKE_CXX_COMPILER=which g++-8 -DCMAKE_C_COMPILER=which gcc-8 ninja cd … 但建议指定CMAKE_BUILD_TYPE。CMAKE_BUILD_TYPE有Debug,Release,RelWithDebInfo 和 MinSizeRel等多个值。如果不指定则会按照RelWithDebInfo类型编译,在后面调试的时候会有一些信息因为编译器优化导致显示不出来。 所以为了研究的目的,建议使用如下方式:mkdir Debug cd Debug cmake … -DCMAKE_CXX_COMPILER=which g++-8 -DCMAKE_C_COMPILER=which gcc-8 -DCMAKE_BUILD_TYPE=Debug ninjacd …
  2. 测试数据准备 以ontime数据集为例,下载数据集:git clone git@github.com:Percona-Lab/ontime-airline-performance.git sh download.sh 启动clickhouse-server,clickhouse-client,创建ontime表,然后导入所有的zip文件。for i in .zip; do echo $i; unzip -cq $i '.csv’ | sed ‘s/.00//g’ | ./clickhouse-client --query=“INSERT INTO ontime FORMAT CSVWithNames”; done4. 测试工具选择 首先尝试了gdb,但是gdb在mac上遇到了codesign无效的问题。据说是gdb高版本在mac上有问题,无法签名,必须要退回到8.0.1版本。但是虽然8.0.1版本没有codesign的问题了,仍然无法在debug的时候进入断点,于是放弃,改为选择lldb。下面是lldb的几个常用命令:(lldb) attach $pid (lldb) b $filePath:$lineNumber 增加断点 (lldb) br l: 打印断点列表 (lldb) bt: 调用栈信息 (lldb) frame info: 当前栈帧信息 (lldb) frame select 0: 选择栈帧 (lldb) po: 打印****

占楼一下打个小广告,公司正在招Clickhosue资深研发工程师 薪资不限外加期权,双休。 如有意向私聊或者加微信13302937585 岗位职责

  • 负责指标体系的OLAP平台的建设、研发、性能优化等工作
  • 负责ClickHouse内核优化和新特性开发;
  • 负责完善周边工具, 保障服务稳定。
  • 结合业务现状和需求,制定解决方案和落地

岗位要求

  • 计算机相关专业,本科及以上学历,2年以上分布式系统开发设计经验;
  • 扎实的c/c++技术基础,对linux,分布式系统,高并发等技术经验丰富;
  • 熟悉clickhouse数据分析引擎,有clickHouse数据库平台开发**经验,深入阅读或修改过源码者优先;
  • 有过分布式系统架构经验或相关开源社区活跃者优先;
  • 对技术变化敏感,视野开阔,对技术及业务场景有自己的见解
  • 具有高度的责任心和团队合作精神。
回到顶部