Se você estiver usando o ClickHouse Cloud no Google Cloud, esta página não se aplica, pois seus serviços já usam o Google Cloud Storage. Se você quiser fazer SELECT ou INSERT de dados do GCS, consulte a função de tabela gcs.
O ClickHouse reconhece que o GCS é uma solução de armazenamento atraente para quem busca separar armazenamento e capacidade computacional. Para viabilizar isso, há suporte ao uso do GCS como armazenamento para um engine MergeTree. Isso permite aproveitar a escalabilidade e os benefícios de custo do GCS, além do desempenho de inserção e consulta do engine MergeTree.
Para usar um GCS bucket como disco, primeiro precisamos declará-lo na configuração do ClickHouse em um arquivo dentro de conf.d. Um exemplo de declaração de um disco GCS é mostrado abaixo. Esta configuração inclui várias seções para configurar o “disco” GCS, o cache e a política especificada nas consultas DDL quando as tabelas forem criadas no disco GCS. Cada uma delas é descrita abaixo.
Configuração de armazenamento > políticas > gcs_main
As políticas de configuração de armazenamento permitem escolher onde os dados serão armazenados. A política destacada abaixo permite armazenar dados no disco gcs ao especificar a política gcs_main. Por exemplo, CREATE TABLE ... SETTINGS storage_policy='gcs_main'.
Supondo que você tenha configurado o disco para usar um bucket com acesso de gravação, você deverá conseguir criar uma tabela como no exemplo abaixo. Para ser breve, usamos um subconjunto das colunas de táxi de NYC e enviamos os dados diretamente para a tabela com armazenamento no GCS:
Dependendo do hardware, essa última operação de insert de 1m de linhas pode levar alguns minutos para ser executada. Você pode acompanhar o progresso por meio da tabela system.processes. Sinta-se à vontade para ajustar a contagem de linhas até o limite de 10m e explorar algumas consultas de exemplo.
SELECT passenger_count, avg(tip_amount) AS avg_tip, avg(total_amount) AS avg_amount FROM trips_gcs GROUP BY passenger_count;
A API XML do Cloud Storage é interoperável com algumas ferramentas e bibliotecas que funcionam com serviços como o Amazon Simple Storage Service (Amazon S3).Para mais informações sobre o ajuste das threads, consulte Otimização de desempenho.
Este tutorial foi escrito para descrever uma implantação replicada do ClickHouse em execução no Google Cloud e usando o Google Cloud Storage (GCS) como “tipo” de disco de armazenamento do ClickHouse.Neste tutorial, você implantará nós do servidor ClickHouse em VMs do Google Cloud Engine, cada um com um bucket do GCS associado para armazenamento. A replicação é coordenada por um conjunto de nós do ClickHouse Keeper, também implantados como VMs.Exemplo de requisitos para alta disponibilidade:
Dois nós do servidor ClickHouse, em duas regiões do GCP
Dois buckets do GCS, implantados nas mesmas regiões dos dois nós do servidor ClickHouse
Três nós do ClickHouse Keeper, dois deles implantados nas mesmas regiões dos nós do servidor ClickHouse. O terceiro pode ficar na mesma região de um dos dois primeiros nós do Keeper, mas em uma zona de disponibilidade diferente.
O ClickHouse Keeper requer dois nós para funcionar; por isso, são necessários três nós para garantir alta disponibilidade.
Implante o ClickHouse em dois hosts; nas configurações de exemplo, eles são chamados de chnode1 e chnode2.Coloque o chnode1 em uma região do GCP e o chnode2 em outra. Neste guia, us-east1 e us-east4 são usados para as VMs do Compute Engine e também para os buckets do GCS.
Não inicie o clickhouse server antes de configurá-lo. Apenas instale-o.
Consulte as instruções de instalação ao executar as etapas de implantação nos nós do servidor ClickHouse.
Implante o ClickHouse Keeper em três hosts; nas configurações de exemplo, eles são chamados de keepernode1, keepernode2 e keepernode3. O keepernode1 pode ser implantado na mesma região que o chnode1, o keepernode2 junto com o chnode2, e o keepernode3 em qualquer uma das regiões, mas em uma zona de disponibilidade diferente da do nó do ClickHouse nessa região.Consulte as instruções de instalação ao executar as etapas de implantação nos nós do ClickHouse Keeper.
Os dois servidores ClickHouse ficarão em regiões diferentes para garantir alta disponibilidade. Cada um terá um bucket do GCS na mesma região.Em Cloud Storage > Buckets, escolha CREATE BUCKET. Para este tutorial, serão criados dois buckets, um em cada uma das regiões us-east1 e us-east4. Os buckets são de região única, com classe de armazenamento padrão, e não são públicos. Quando solicitado, ative a prevenção de acesso público. Não crie pastas; elas serão criadas quando o ClickHouse gravar no armazenamento.Se precisar de instruções passo a passo para criar buckets e uma chave HMAC, expanda Criar buckets do GCS e uma chave HMAC e siga as instruções:
Criar uma chave HMAC e um segredo de conta de serviço
Abra Cloud Storage > Settings > Interoperability e escolha uma Access key existente ou CREATE A KEY FOR A SERVICE ACCOUNT. Este guia aborda o processo de criação de uma nova chave para uma nova conta de serviço.
Se este for um projeto sem nenhuma conta de serviço existente, clique em CREATE NEW ACCOUNT.Há três etapas para criar a conta de serviço. Na primeira, dê à conta um nome, ID e descrição significativos.Na caixa de diálogo das configurações de Interoperability, a IAM role Storage Object Admin é recomendada; selecione essa função na segunda etapa.A terceira etapa é opcional e não é usada neste guia. Você pode permitir que usuários tenham esses privilégios de acordo com suas políticas.A chave HMAC da conta de serviço será exibida. Salve essas informações, pois elas serão usadas na configuração do ClickHouse.
Todos os nós do ClickHouse Keeper têm o mesmo arquivo de configuração, exceto pela linha server_id (a primeira linha destacada abaixo). Modifique o arquivo com os hostname dos seus servidores ClickHouse Keeper e, em cada servidor, defina o server_id para corresponder à entrada server adequada em raft_configuration. Como, neste exemplo, o server_id está definido como 3, destacamos as linhas correspondentes em raft_configuration.
Edite o arquivo com os hostname e certifique-se de que eles possam ser resolvidos a partir dos nós do servidor ClickHouse e dos nós do Keeper
Copie o arquivo para o local correto (/etc/clickhouse-keeper/keeper_config.xml em cada um dos servidores Keeper)
Edite o server_id em cada máquina com base no número da respectiva entrada em raft_configuration
prática recomendadaAlgumas etapas deste guia solicitarão que você coloque um arquivo de configuração em /etc/clickhouse-server/config.d/. Este é o local padrão em sistemas Linux para arquivos de substituição da configuração. Quando você colocar esses arquivos nesse diretório, o ClickHouse mesclará o conteúdo com a configuração padrão. Ao colocar esses arquivos no diretório config.d, você evitará perder sua configuração durante uma atualização.
Por padrão, o ClickHouse escuta na interface loopback; em uma configuração replicada, é necessária conectividade de rede entre as máquinas. Configure-o para escutar em todas as interfaces:
A replicação é coordenada pelo ClickHouse Keeper. Este arquivo de configuração identifica os nós do ClickHouse Keeper pelo hostname e pelo número da porta.
Edite os hostnames para corresponder aos hosts do seu Keeper
Este arquivo configura o hostname e a porta de cada servidor ClickHouse no cluster. O arquivo de configuração padrão contém definições de cluster de exemplo; para exibir apenas os clusters totalmente configurados, a tag replace="true" é adicionada à entrada remote_servers, de modo que, quando essa configuração for combinada com a padrão, ela substitua a seção remote_servers em vez de ser acrescentada a ela.
Edite o arquivo com seus hostnames e certifique-se de que eles possam ser resolvidos a partir dos nós do servidor ClickHouse
Este arquivo configura ajustes relacionados ao caminho do ClickHouse Keeper. Especificamente, as macros usadas para identificar a qual réplica os dados pertencem. Em um servidor, a réplica deve ser especificada como replica_1 e, no outro, como replica_2. Os nomes podem ser alterados; com base no nosso exemplo de uma réplica armazenada na Carolina do Sul e a outra no norte da Virgínia, os valores poderiam ser carolina e virginia; apenas certifique-se de que eles sejam diferentes em cada máquina.
A configuração de armazenamento do ClickHouse inclui disks e policies. O disco configurado abaixo se chama gcs e é do types3. O tipo é s3 porque o ClickHouse acessa o bucket do GCS como se fosse um bucket do S3 da AWS. Serão necessárias duas cópias dessa configuração, uma para cada nó do servidor ClickHouse.As substituições a seguir devem ser feitas na configuração abaixo.Estas substituições diferem entre os dois nós do servidor ClickHouse:
REPLICA 1 BUCKET deve ser definido como o nome do bucket na mesma região do servidor
REPLICA 1 FOLDER deve ser alterado para replica_1 em um dos servidores e para replica_2 no outro
Estas substituições são comuns aos dois nós:
access_key_id deve ser definido como a chave HMAC gerada anteriormente
secret_access_key deve ser definido como o segredo HMAC gerado anteriormente
Envie comandos ao ClickHouse Keeper com netcat. Por exemplo, mntr retorna o estado do cluster do ClickHouse Keeper. Se você executar o comando em cada um dos nós do Keeper, verá que um deles é o líder e os outros dois são seguidores:
Ao examinar os buckets, você verá que foi criada uma pasta em cada bucket com o nome usado no arquivo de configuração storage.xml. Expanda as pastas e você verá vários arquivos, que representam as partições de dados.