前情概要

由于工作需要用到clickhouse, 这里暂不介绍概念,应用场景,谷歌,百度一大把. 将安装过程踩下的坑记录下来备用

ClickHouse源码 git clone安装(直接下载源码包安装失败)

源码安装一定要用git克隆下来,不要下载github上已经打好的包,因为有些依赖的子模块时时刻刻在更新.要不然编译各种报错. 一定要克隆,一定要克隆,一定要克隆

  1. github上找到一个最新的稳定版本,一般以 -stable结尾的

  2. 创建一个clickhouse目录如 mkdir /data/clickhouse-19.7.3.9-stable,这里我带上版本号,方便以后好升级

  3. clone

    • cd /data/clickhouse-19.7.3.9-stable

    • git clone -b 'v19.7.3.9-stable' --recursive https://github.com/yandex/ClickHouse.git

      这里递归下载依赖可能需要一点时间, 200kb/s的速度,我这里用了将近半个小时

  4. 升级子模块

    cd /data/clickhouse-19.7.3.9-stable/ClickHouse
    git submodule update --init --recursive
  5. 创建编译目录

    cd /data/clickhouse-19.7.3.9-stable/ClickHouse

    mkdir build

    cd build

    cmake3 .. (这一步生成可执行编译的makefile文件,如果系统没有cmake3 执行: sudo yum -y install cmake3 )

    这一步会报缺少很多依赖错误,报什么依赖错误,安装什么依赖即可,如果嫌麻烦,可以一次性安装所有依赖,按官方文档来:https://clickhouse.yandex/docs/en/development/build/,注意把debian系列的 apt-get命令换成 yum

    ##安裝gcc,g++ 7以上的版本,clickhouse 用了很多 C++ 11的新特性
    sudo yum -y install devtoolset--gcc
    sudo yum -y install devtoolset--gcc-c++
    source /opt/rh/devtoolset-/enable
    #安装完确认一下版本号
    gcc --version

#安装jemalloc (clickhouse 没有用glibc的内存分配器)
sudo yum -y install jemalloc-devel
#安装openssl
sudo yum -y install openssl-devel
#安装epel
sudo yum -y install epel-release

我这里可能系统自带了很多已经装好的软件,如果在cmake3后还是报很多依赖缺失,按报错一次安装依赖即可.

装完依赖后要再次回去清掉build里产生的缓存,可以直接删除 ,删除完重新执行cmake3指向clickhouse根目录.

cd build
rm -rf *
cmake3 ..

这步最后会生成日志:

-- /data/clickhouse-19.7.3.9-stable/ClickHouse/utils: Have  megabytes of memory. Limiting concurrent linkers jobs to  and compiler jobs to OFF
-- /data/clickhouse-19.7.3.9-stable/ClickHouse/dbms: Have megabytes of memory. Limiting concurrent linkers jobs to and compiler jobs to
-- Will build ClickHouse 19.7.3.1 revision
-- Using internal=OFF compiler=: headers=/usr/share/clickhouse/headers/19.7.3.1 : /usr/local/bin/clickhouse-clang -pipe -msse4. -msse4. -mpopcnt -fno-omit-frame-pointer -Wall -Wnon-virtual-dtor -Wextra -Werror -O2 -g -DNDEBUG -O3 -std=c++1z -x c++ -march=native -fPIC -fvisibility=hidden -fno-implement-inlines -nostdinc -nostdinc++ -Wno-unused-command-line-argument -Bprefix=/usr/share/clickhouse -isysroot=/usr/share/clickhouse/headers/19.7.3.1; clickhouse-lld
-- Target check already exists
-- Configuring done
-- Generating done
-- Build files have been written to: /data/clickhouse-19.7.3.9-stable/ClickHouse/build

说明可执行编译的文件已经生成到build目录,在接下来的那一步去执行编译即可.

  6. 编译

  cd /data/clickhouse-19.7.3.9-stable/ClickHouse/build

  make

  大约在7%的时候会报错:

查了一下官网的issue,有同样的小伙儿碰到这个问题:

https://github.com/yandex/ClickHouse/issues/5043

按推荐的方式试了一下:

这里我暂时不需要指定编译后的文件的目录,就没有指定编译目录,直接让其生成在build目录

cd /data/clickhouse-19.7.3.9-stable/ClickHouse/build

rm -rf * (这里清理已经生成的文件)

## 再次执行cmake3带上参数如下, 大约10分钟左右生成编译文件成功

cmake3 .. -DGLIBC_COMPATIBILITY=OFF -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo

## 成功后,再次编译

make

这个过程比较漫长 ,个人从 16:45开始编译,直到 20:35才编译完,成功编译的结果:

最终编译成功的可执行的程序在

build/dbms/programs下,如 clickhouse-server

7. 启动

    直接 进入build/dbms/programs执行:  

cd build/dbms/programs
./clickhouse-server

报错

显然找不到配置文件,我们可以按惯例查看一下help,还好它做了help

./clickhouse-server --help

嗯,good .这个help做的还不错,很好懂. 这个配置文件上哪儿去找呢.看官方文档: https://clickhouse.yandex/docs/en/getting_started/ 官方提供中文版文档,但是还没翻译完,只有一半是中文的

OK ,去我们拉下来的源代码目录 src/dbms/programs/server/config.xml 拷一份放到一个目录,改一下配置,启动, 可以愉快的玩耍了.具体的配置慢慢参考官网文档研究..

clickhouse源码Redhat系列机单机版安装踩坑笔记的更多相关文章

  1. 从源码看Spring Security之采坑笔记(Spring Boot篇)

    一:唠嗑 鼓捣了两天的Spring Security,踩了不少坑.如果你在学Spring Security,恰好又是使用的Spring Boot,那么给我点个赞吧!这篇博客将会让你了解Spring S ...

  2. 从源码解析Electron的安装为什么这么慢

    前言 Electron作为一款跨平台的桌面应用端解决方案已经风靡全球.作为开发者,我们几乎不用关心与操作系统的交互,直接通过Web前端技术与Electron提供的API就可以完成桌面应用端的开发. 然 ...

  3. 从源码(编译)安装golang 二

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  4. ClickHouse源码笔记3:函数调用的向量化实现

    分享一下笔者研读ClickHouse源码时分析函数调用的实现,重点在于分析Clickhouse查询层实现的接口,以及Clickhouse是如何利用这些接口更好的实现向量化的.本文的源码分析基于Clic ...

  5. ClickHouse源码笔记4:FilterBlockInputStream, 探寻where,having的实现

    书接上文,本篇继续分享ClickHouse源码中一个重要的流,FilterBlockInputStream的实现,重点在于分析Clickhouse是如何在执行引擎实现向量化的Filter操作符,而利用 ...

  6. LNMP架构的源码编译以及yum安装

    LNMP架构的源码编译以及yum安装 目录 LNMP架构的源码编译以及yum安装 一.LNMP架构的编译安装 1. 安装nginx服务 (1)关闭防火墙 (2)安装依赖包 (3)创建运行用户 (4)编 ...

  7. Android Studio安装踩坑

    title: Android Studio安装踩坑 date: 2018-09-07 19:31:32 updated: tags: [Android,Android Studio,坑] descri ...

  8. CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记

    CAS5.3服务器搭建与客户端整合SpringBoot以及踩坑笔记 cas服务器的搭建 导出证书(1和2步骤是找了课程,随便写了一下存记录,不过对于自己测试不投入使用应该不影响) C:\Users\D ...

  9. EntityFramework CodeFirst SQLServer转Oracle踩坑笔记

    接着在Oracle中使用Entity Framework 6 CodeFirst这篇博文,正在将项目从SQLServer 2012转至Oracle 11g,目前为止遇到的问题在此记录下. SQL Se ...

随机推荐

  1. linux命令学习笔记-eval命令详解

    功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. .eval命令将会首先 ...

  2. 【Lintcode】046.Majority Number

    题目: Given an array of integers, the majority number is the number that occurs more than half of the ...

  3. Redo Gap 处理与优化

    理论背景 当redo data 传送发生中断时就会产生redo gap.当redo 传送恢复正常以后,redo transport service 会自动检测redo gap并发送缺失的redo 到d ...

  4. 系统启动挂载根文件系统时Kernel panic

    转自:http://qiuye.iteye.com/blog/543595 这类问题很常见,先总体介绍一下解决思路. 能出现让人激动的的控制台,那么系统移植已经接近完成:但是不少人在最后一步出现问题. ...

  5. JavaScript高级程序设计学习笔记第五章--引用类型

    一.object类型 1.创建object类型的两种方式: 第一种,使用构造函数 var person = new Object();或者是var person={};/与new Object()等价 ...

  6. 在Elasticsearch6.X中如何实现去重

    1.前言 Elasticsearch有没有类似mysql的distinct的去重功能呢? 1)如何去重计数? 类似mysql: select distinct(count(1)) from my_ta ...

  7. windows64位 redis安装 步骤

    官方下载:http://redis.io/download 可以根据需要下载不同版本 windows版:https://github.com/MSOpenTech/redis/releases 在D盘 ...

  8. 结对项目-ExamGeneration-四则运算试题生成与计算程序

    目录 ExamGeneration 进展 功能 调用示例 PSP表格 结对分工 功能模块详解 Chernobyl: -Gaveu: 运行测试 -Gaveu: Chernobyl: 项目总结与反思 Ch ...

  9. 60行代码实现一个迷你版Vue Router

    这是一个超级精简版的VueRouter,实现hash模式下,hash改变组件切换的功能,原理就是利用了 Vue.js 的响应式机制触发router-view组件的重新渲染. 代码 https://gi ...

  10. qemu编译

    符号说明 $ 表示在用户模式下执行命令 # 表示在root模式下执行命令 ### 表示注释用于解释接下来一条命令的作用 更新环境源 设置阿里源 $ sudo mv /etc/yum.repos.d/C ...