clickhouse实战--clickhouse安装与使用

扫一扫加入大数据公众号和技术交流群,了解更多大数据技术,还有免费资料等你哦

Clickhouse安装方式

  1. 单机安装
  2. 容器安装
  3. 集群安装

建议:测试与学习时,使用容器安装方便上手与学习

Ubuntu/Debian安装

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 file,可以根据自己的需要进行定制化,由于官方镜像默认监听得是IPV6地址,可能启动无法正常使用,可以进入容器修改相关配置项,方可正常使用,本文不介绍Docker安装,具体按照步骤参考:https://www.runoob.com/docker/centos-docker-install.html。

下载docker clickhouse包

> sudo docker pull yandex/clickhouse-client

> sudo docker pull yandex/clickhouse-server

启动clickhouse-server实例

$ docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server

-d   代表后台运行 --name 自定义ck的服务名称  -p:容器端口映射到当前主机端口 不指定默认http端口是8123,tcp端口是9000

clickhouse-client连接

$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server

体验测试

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中拷贝出来

docker cp clickhouse-server:/etc/clickhouse-server/ /etc/clickhouse-server/

配置容器映射的本地ip地址

       修改 /etc/clickhouse-server/config.xml 配置 ::

clickhouse实战--clickhouse安装与使用_第1张图片
用自定义配置文件启动容器

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 查看表clickhouse实战--clickhouse安装与使用_第2张图片

java (jdbc)操作clickhouse

maven项目引入依赖


   ru.yandex.clickhouse
   clickhouse-jdbc
   0.1.40

注意事项:clickhouse的http访问默认端口是8123,tcp默认端口是9000。所有jdbc连接ck的端口是8123

jdbc操作clickhouse案例

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 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();
            }
        }
    }
}

执行结果

clickhouse实战--clickhouse安装与使用_第3张图片

clickhouse实战--clickhouse安装与使用_第4张图片

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

你可能感兴趣的:(clickhouse,大数据)