扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦
Clickhouse安装方式
- 单机安装
- 容器安装
- 集群安装
建议:测试与学习时,使用容器安装方便上手与学习
Ubuntu/Debian安装
1 2 3 4 5 6 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4 # optional sudo apt-add-repository "deb http://repo.yandex.ru/clickhouse/deb/stable/ main/" sudo apt-get update sudo apt-get install clickhouse-server-common clickhouse-client -y sudo service clickhouse-server start clickhouse-client |
单机的安装部署,很简单,安装上基本就可以启动体验它的强大功能,你会发现clickhouse单机性能也很强。对于其他操作系统,最简单的使用方式是官方提供的Clickhouse Docker images。或者通过官方文档源码构建Clickhouse。
Docker安装
官方Docker镜像提供也是基于Ubuntu之上的,Docker提供强大的底层系统兼容性,所以基本在任何能安装启动Docker系统之上都可以运行clickhouse,官方提供的docker镜像,也提供
下载docker clickhouse包
1 2 3 | > sudo docker pull yandex/clickhouse-client > sudo docker pull yandex/clickhouse-server |
启动clickhouse-server实例
1 | $ docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server |
-d 代表后台运行 --name 自定义ck的服务名称 -p:容器端口映射到当前主机端口 不指定默认http端口是8123,tcp端口是9000
clickhouse-client连接
1 | $ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server |
体验测试
1 2 3 4 5 | CREATE TABLE test (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192); insert into test (FlightDate,Year) values('2020-06-05',2001); select count(*) from test; |
配置远程访问
clickhouse 允许远程访问,我们可以clickhouse的配置文件从Docker中拷贝出来
1 | docker cp clickhouse-server:/etc/clickhouse-server/ /etc/clickhouse-server/ |
配置容器映射的本地ip地址
修改 /etc/clickhouse-server/config.xml 配置

用自定义配置文件启动容器
docker run -d --name docker-clickhouse --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 -v /etc/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml yandex/clickhouse-server
查看容器
docker ps -a

进入指定容器
docker exec -it 容器id /bin/bash
比如进入容器id为69e0598f6c26 的ck服务,clickhouse-client 进入clickhouse命令行,show table 查看表
java (jdbc)操作clickhouse
maven项目引入依赖
1 2 3 4 5 | <dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.1.40</version> </dependency> |
注意事项:clickhouse的http访问默认端口是8123,tcp默认端口是9000。所有jdbc连接ck的端口是8123
jdbc操作clickhouse案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ClickHouse { public static void main(String[] args) { //String createTable = "CREATE TABLE test (FlightDate Date,Year UInt16) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);";//查询数据库 //String insert = "insert into test (FlightDate,Year) values('2020-06-05',2001);";//查看表 String select = "select count(*) count from test";//查询ontime数据量 sqlProcess(select); } public static void sqlProcess(String sql) { String address = "jdbc:clickhouse://127.0.0.1:8123/default"; Connection connection = null; Statement statement = null; ResultSet results = null; try { Class.forName("ru.yandex.clickhouse.ClickHouseDriver"); connection = DriverManager.getConnection(address); statement = connection.createStatement(); results = statement.executeQuery(sql); ResultSetMetaData rsmd = results.getMetaData(); List<Map> list = new ArrayList(); while (results.next()) { Map map = new HashMap(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { map.put(rsmd.getColumnName(i), results.getString(rsmd.getColumnName(i))); } list.add(map); } for (Map map : list) { System.err.println(map); } } catch (Exception e) { e.printStackTrace(); } finally {//关闭连接 try { if (results != null) { results.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } |
执行结果


以上就是这篇文章的全部内容,我是阿华田,励志做一名对大家有帮助的博主,能看到这里的都是人才。非常感谢人才们看到这里。如果这个文章写得还不错,觉得「阿华田」有点东西的话 求点赞?? 求关注?? 求分享?? ,对我来说真的 非常非常有用!!!白嫖不好,创作不易,下面是我的公众号,谢谢各位的支持和认可,我们下篇文章见!

