Construção do banco de dados Apache Doris (1)

1. Apresentação de Doris

O Apache Doris é um banco de dados analítico em tempo real e de alto desempenho baseado na arquitetura MPP. É bem conhecido por seus recursos extremamente rápidos e fáceis de usar. Ele só precisa de um tempo de resposta de menos de um segundo para retornar resultados de consulta em dados massivos. Ele pode não apenas oferecer suporte a alta simultaneidade. O cenário de consulta de ponto também pode oferecer suporte a cenários de análise complexos com alto rendimento. Com base nisso, o Apache Doris pode atender melhor a cenários de uso, como análise de relatório, consulta ad hoc, construção de data warehouse unificado, aceleração de consulta de federação de data lake, etc. análise, análise de pedidos e outras aplicações.

O Apache Doris nasceu no projeto Palo do negócio de relatórios de publicidade do Baidu. Foi oficialmente de código aberto em 2017. Em julho de 2018, o Baidu o doou à Apache Foundation para incubação. Posteriormente, sob a orientação dos mentores do Apache, membros do comitê de gerenciamento de projetos de incubadoras incubadas e operadas. Atualmente, a comunidade Apache Doris reúne mais de 400 colaboradores de centenas de empresas em diferentes setores, e o número de colaboradores ativos por mês ultrapassa 100. Em junho de 2022, Apache Doris formou-se com sucesso na Apache Incubator e tornou-se oficialmente o Apache Top-Level Project (TLP).

O Apache Doris agora tem uma ampla variedade de grupos de usuários na China e em todo o mundo. Até agora, o Apache Doris foi usado no ambiente de produção de mais de 2.000 empresas em todo o mundo. Entre as 50 principais empresas de Internet em capitalização de mercado ou avaliação, Mais de 80% deles usam Apache Doris há muito tempo, incluindo Baidu, Meituan, Xiaomi, JD.com, ByteDance, Tencent, Netease, Kuaishou, Weibo, Shell, etc. Ao mesmo tempo, também possui aplicações ricas em algumas indústrias tradicionais, como finanças, energia, manufatura e telecomunicações.

2. Cenários de uso

Conforme mostrado na figura abaixo, após várias integrações e processamentos de dados, as fontes de dados geralmente são armazenadas no data warehouse Doris em tempo real e nos lake warehouses off-line (em Hive, Iceberg, Hudi). O Apache Doris é amplamente usado nos cenários a seguir.
insira a descrição da imagem aqui

  • análise de relatório

  • Kanban em tempo real (Painéis)

  • Relatórios para Analistas e Gerentes Internos

  • Análise de relatório de alta simultaneidade orientada ao usuário ou ao cliente (Customer Facing
    Analytics). Por exemplo, a análise de site para proprietários de sites e relatórios de publicidade para anunciantes geralmente exigem dezenas de milhares de QPS simultaneamente
    , e a latência de consulta requer resposta em nível de milissegundos. A conhecida empresa de comércio eletrônico JD.com usa o Apache Doris em relatórios de publicidade, grava 10 bilhões de linhas de dados todos os dias, faz consultas simultaneamente com dezenas de milhares de QPS e o atraso da consulta do percentil 99 é de 150 ms.

  • Consulta Ad-hoc: Análise de autoatendimento para analistas.O modo de consulta não é fixo e requer alto rendimento. A Xiaomi construiu uma plataforma de análise de crescimento (Growing Analytics, GA) com base em Doris, usando dados de comportamento do usuário para analisar o crescimento dos negócios. O atraso médio da consulta é de 10 segundos e o atraso da consulta do 95º percentil está dentro de 30 segundos. O volume diário de consultas SQL é dezenas de milhares tiram.

  • Construção unificada de data warehouse: uma plataforma atende às necessidades de construção unificada de data warehouse e simplifica a pesada pilha de software de big data. O data warehouse unificado de Haidilao baseado em Doris substituiu a
    antiga arquitetura composta por Spark, Hive, Kudu, Hbase e Phoenix, e a arquitetura foi bastante simplificada.

  • Consulta federada de data lake: análise federada de dados localizados em Hive, Iceberg e Hudi por meio do método de aparência, e o desempenho da consulta é bastante aprimorado sob a premissa de evitar a cópia de dados.

3. Visão geral técnica

A arquitetura geral do Doris é mostrada na figura abaixo. A arquitetura do Doris é muito simples, com apenas dois tipos de processos

  • Frontend (FE) é o principal responsável pelo acesso das solicitações do usuário, planejamento de análise de consultas, gerenciamento de metadados e gerenciamento de nós.
  • Backend (BE) é o principal responsável pelo armazenamento de dados e execução dos planos de consulta.

Esses dois tipos de processos são escaláveis ​​horizontalmente e um único cluster pode suportar centenas de máquinas e dezenas de petabytes de capacidade de armazenamento. E esses dois tipos de processos garantem alta disponibilidade de serviços e alta confiabilidade de dados por meio de protocolos de consistência. Esse projeto de arquitetura altamente integrado reduz consideravelmente o custo de operação e manutenção de um sistema distribuído.
insira a descrição da imagem aquiEm termos de interface, Doris adota o protocolo MySQL, é altamente compatível com a sintaxe MySQL, oferece suporte a SQL padrão, os usuários podem acessar Doris por meio de várias ferramentas de cliente e oferece suporte à conexão contínua com ferramentas de BI.

Em termos de mecanismo de armazenamento, Doris adota armazenamento colunar, codifica, compacta e lê dados por coluna, o que pode atingir uma taxa de compactação muito alta e, ao mesmo tempo, reduzir a digitalização de uma grande quantidade de dados irrelevantes, de modo a tornar mais uso eficaz dos recursos de E/S e CPU.

Doris também suporta uma estrutura de índice mais rica para reduzir a varredura de dados:

  • Índice de chave composta classificado, você pode especificar até três colunas para formar uma chave de classificação composta. Por meio desse índice, os dados podem ser cortados de forma eficaz, de modo a oferecer melhor suporte a cenários de relatório de alta simultaneidade
  • Índice de ordem Z: usando o índice de ordem Z, você pode executar consultas de intervalo com eficiência em qualquer combinação de campos no modelo de dados
  • Min/Max: Consultas de equivalência e intervalo para filtragem eficiente de tipos numéricos
  • Filtro Bloom: A filtragem equivalente e o corte de colunas de alta cardinalidade são muito eficazes
  • Inverter índice: capacidade de recuperar rapidamente qualquer campo

Em termos de modelos de armazenamento, o Doris suporta uma variedade de modelos de armazenamento otimizados para diferentes cenários:

  • Modelo de chave agregada: a coluna de valor da mesma chave é mesclada e o desempenho é bastante aprimorado por meio da agregação inicial
  • Modelo de chave exclusiva: a chave é única, os dados da mesma chave são substituídos e a atualização dos dados no nível da linha é realizada
  • Modelo de chave duplicada: modelo de dados detalhado, satisfazendo o armazenamento detalhado de tabelas de fatos

Doris também suporta visualizações materializadas fortemente consistentes.A atualização e seleção de visualizações materializadas são realizadas automaticamente no sistema sem seleção manual pelos usuários, reduzindo assim muito o custo de manutenção de visualizações materializadas.

Em termos de mecanismo de consulta, Doris adota o modelo MPP, que executa em paralelo entre os nós e dentro dos nós, e também suporta o Shuffle Join distribuído de várias tabelas grandes, para que possa lidar melhor com consultas complexas.
insira a descrição da imagem aquiO mecanismo de consulta Doris é um mecanismo de consulta vetorizado. Todas as estruturas de memória podem ser dispostas em colunas, o que pode reduzir bastante as chamadas de funções virtuais, melhorar a taxa de acertos do cache e usar instruções SIMD com eficiência. No cenário de agregação de tabela ampla, o desempenho é de 5 a 10 vezes maior que o do mecanismo não vetorizado.
insira a descrição da imagem aquiDoris adota a tecnologia Adaptive Query Execution, que pode ajustar dinamicamente o plano de execução de acordo com as estatísticas de tempo de execução. Por exemplo, a tecnologia Runtime Filter pode gerar filtro em tempo de execução e empurrá-lo para o lado do Probe, e pode penetrar automaticamente no filtro para o nó Scan inferior em o lado do Probe. Isso reduz muito a quantidade de dados do Probe e acelera o desempenho da junção. O filtro de tempo de execução de Doris oferece suporte ao filtro In/Min/Max/Bloom.

Em termos de otimizadores, Doris usa uma estratégia de otimização combinando CBO e RBO. RBO suporta dobramento constante, reescrita de subconsulta, pushdown de predicado, etc. CBO suporta Join Reorder. No momento, o CBO ainda está em processo de otimização contínua, concentrando-se principalmente na coleta e derivação de informações estatísticas mais precisas e na estimativa de modelo de custo mais precisa.

4. Baixar Doris

Doris é executado em um ambiente Linux. CentOS 7.x ou Ubuntu 16.04 ou superior é recomendado. Ao mesmo tempo, você precisa instalar o ambiente de execução Java (a versão mínima do JDK é 8). Para verificar a versão do Java que você instalou , execute o seguinte comando:

java -version

Em seguida, baixe a versão binária da versão estável 1.2.5 da Doris e descompacte-a.

wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.5-bin-x86_64.tar.xz

A operação é mostrada na figura abaixo
insira a descrição da imagem aquiUse o seguinte comando para descompactar

tar xvf apache-doris-1.2.5-bin-x86_64.tar.xz

A operação é como mostrado na figura abaixo
insira a descrição da imagem aqui

5. Configurar Doris

Configurar FEs

Entramos no diretório apache-doris-1.2.5-bin-x86_64/fe

cd apache-doris-1.2.5-bin-x86_64/fe/

A operação é mostrada na figura abaixo.
insira a descrição da imagem aqui
Modifique o arquivo de configuração do FE conf/fe.conf. Aqui nós modificamos principalmente dois parâmetros: priority_networks e meta_dir. Se você precisar de configurações mais otimizadas, consulte as instruções de configuração do parâmetro FE para ajustes.

  1. Adicionar parâmetro priority_networks
priority_networks= 192.168.50.186/24

Use o seguinte comando para adicionar:

 vim conf/fe.conf #编辑
 :wq #保存退出

insira a descrição da imagem aqui

Perceber:

Este parâmetro deve ser configurado durante a instalação, especialmente quando uma máquina possui vários endereços IP, precisamos especificar um endereço IP exclusivo para FE.

Aqui o IP do nó local é 192.168.50.186, então podemos configurar como 192.168.50.186/24 por máscara.

  1. Adicionar diretório de metadados
meta_dir=/data/doris-meta

Primeiro, a máquina local escolhe criá-lo no diretório de dados, usando o seguinte comando:

mkdir -p /data/doris-meta #创建元数据目录
cd /data/doris-meta #进入已经创建好目录进行验证
pwd #查看目录结构

A operação é mostrada na figura abaixo:
insira a descrição da imagem aqui
Em seguida, entre no diretório fe e adicione meta_dir= /data/doris-meta no arquivo fe.conf correspondente. O comando específico da operação é o seguinte:

cd /data/apache-doris-1.2.5-bin-x86_64/fe/
vim conf/fe.conf #编辑
:wq #保存退出

A operação é mostrada na figura abaixo:
insira a descrição da imagem aqui
Nota:
Você não pode configurar aqui, o padrão é doris-meta no diretório de instalação do Doris FE,

Para configurar o diretório de metadados separadamente, você precisa criar o diretório especificado com antecedência

Iniciar FE

Execute o seguinte comando no diretório de instalação do FE para concluir a inicialização do FE.

./bin/start_fe.sh --daemon

Veja o status de execução do FE

Você pode verificar se Doris foi iniciado com sucesso com o seguinte comando

curl http://192.168.50.186:8030/api/bootstrap

Aqui o IP e a porta são IP do FE e http_port (8030 por padrão), se você executá-lo no nó FE, basta executar o comando acima diretamente.

Se houver "msg":"success" no resultado retornado, isso significa que a inicialização foi bem-sucedida.

Você também pode verificar através da interface do usuário da Web fornecida por Doris FE, digite o endereço no navegador

http:// fe_ip:8030

Você pode ver a seguinte interface, indicando que a inicialização do FE foi bem-sucedida
insira a descrição da imagem aqui
Nota:

Aqui usamos a raiz de usuário padrão interna do Doris para fazer login, e a senha está vazia.
Esta é uma interface de gerenciamento do Doris, apenas usuários com direitos administrativos podem fazer login e usuários comuns não podem fazer login.

Conectar ao FE

Vamos conectar Doris FE através do cliente MySQL e baixar o cliente MySQL sem instalação

Descompacte o cliente MySQL recém-baixado e você poderá encontrar a ferramenta de linha de comando mysql no diretório bin/. Em seguida, execute o seguinte comando para se conectar a Doris.

mysql -uroot -P9030 -h192.168.50.186

O funcionamento é conforme a figura abaixo:
insira a descrição da imagem aqui
Nota:

  1. O usuário raiz usado aqui é o usuário padrão integrado de doris e também é um usuário superadministrador. Para obter permissões de usuário específicas, consulte gerenciamento de permissão
  2. -P : Aqui está a porta de consulta que conectamos a Doris, a porta padrão é 9030, que corresponde à query_port em fe.conf
  3. -h : Aqui está o endereço IP do FE ao qual nos conectamos, se o seu cliente e o FE estiverem instalados no mesmo nó, você pode usar 127.0.0.1.

Execute o seguinte comando para visualizar o status de execução do FE

show frontends\G;

Então você pode ver resultados semelhantes aos seguintes:
insira a descrição da imagem aquiSe as três colunas de IsMaster, Join e Alive forem todas verdadeiras, isso significa que o nó é normal.

Conexão criptografada FE

Doris suporta conexões criptografadas baseadas em SSL. Atualmente suporta os protocolos TLS1.2 e TLS1.3. Você pode habilitar o modo SSL de Doris através da seguinte configuração: Modifique o arquivo de configuração FE conf/fe.conf e adicione enable_ssl = true.

Em seguida, conecte-se a Doris por meio do cliente mysql, o mysql suporta cinco modos SSL:

1.mysql -uroot -P9030 -h127.0.0.1 é o mesmo que mysql --ssl-mode=PREFERRED -uroot -P9030 -h127.0.0.1, ambos tentam estabelecer uma conexão SSL criptografada no início, se falhar, tente usar a conexão Normal.

2.mysql --ssl-mode=DISABLE -uroot -P9030 -h127.0.0.1, não use conexão criptografada SSL, use conexão normal diretamente.

3.mysql --ssl-mode=REQUIRED -uroot -P9030 -h127.0.0.1, força o uso de conexões SSL criptografadas.

4.mysql --ssl-mode=VERIFY_CA --ssl-ca=ca.pem -uroot -P9030 -h127.0.0.1, força o uso de conexão criptografada SSL e verifica se a identidade do servidor é válida especificando o certificado CA.

5. mysql --ssl-mode=VERIFY_CA --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -uroot -P9030 -h127.0.0. 1. Imponha o uso de conexões criptografadas SSL e autenticação bidirecional.

Nota: O parâmetro --ssl-mode foi introduzido na versão mysql5.7.11, consulte aqui para a versão do cliente mysql inferior a esta versão.

Doris precisa de um arquivo de certificado de chave para verificar a conexão SSL criptografada. O arquivo de certificado de chave padrão está localizado em Doris/fe/mysql_ssl_default_certificate/. Para a geração do arquivo de certificado de chave, consulte a configuração do certificado de chave.

parar nó FE

A parada de Doris FE pode ser feita pelo seguinte comando

./bin/stop_fe.sh

Configurar BE

Entramos no diretório apache-doris-1.2.5-bin-x86_64/be

cd /data/apache-doris-1.2.5-bin-x86_64/be

Modifique o arquivo de configuração do BE conf/be.conf. Aqui nós modificamos principalmente dois parâmetros: priority_networks e storage_root. Se você precisar de configurações mais otimizadas, consulte as instruções de configuração do parâmetro BE para ajustes.

  1. Adicionar parâmetro priority_networks
priority_networks=192.168.50.186/24

Use o seguinte comando:

 vim conf/be.conf #编辑
 :wq #保存退出

A operação é conforme a figura abaixo
insira a descrição da imagem aquiinsira a descrição da imagem aqui
. Nota:

Devemos configurar este parâmetro durante a instalação, especialmente quando uma máquina possui vários endereços IP, precisamos especificar um endereço IP exclusivo para o BE.

  1. Configurar o diretório de armazenamento de dados BE
storage_root_path=/data/data_dir

Use o seguinte comando:

 mkdir -p /data/data_dir
 vim conf/be.conf #编辑
 :wq #保存退出

A operação é mostrada na figura abaixo
insira a descrição da imagem aquiinsira a descrição da imagem aqui

Perceber:

O diretório padrão está sob o diretório de armazenamento do diretório de instalação do BE.
O diretório de armazenamento para a configuração do BE deve ser criado primeiro

  1. Configure a variável de ambiente JAVA_HOME
    Nota: Este servidor já foi configurado. Se você precisar de um tutorial de configuração, consulte o artigo de instalação do JDK
    do autor . Visto que a versão 1.2 suporta funções Java UDF, BE depende do ambiente Java. Portanto, para pré-configurar JAVA_HOMEvariáveis ​​de ambiente, você também pode start_be.shadicionar na primeira linha do script de inicialização export JAVA_HOME=your_java_home_pathpara adicionar variáveis ​​de ambiente.
  2. Instalar a função Java UDF
    Instalar a função Java UDF Como a função Java UDF é suportada a partir da versão 1.2, você precisa baixar o pacote JAR da função Java UDF do site oficial e colocá-lo no diretório lib do BE, caso contrário, pode falhar ao iniciar.

Iniciar SER

Execute o seguinte comando no diretório de instalação do BE para concluir a inicialização do BE.

./bin/start_be.sh --daemon

Nota: Se solicitado na inicialização, defina vm.max_map_count como 2000000 na raiz usando 'sysctl -w vm.max_map_count=2000000' e defina o número máximo de descritores de arquivos abertos como 65536 usando 'ulimit -n 65536'. Por favor, execute o comando da seguinte forma:

sysctl -w vm.max_map_count=2000000
ulimit -n 65536

Por exemplo, se sua CPU não suporta AVX2, você precisa reconstruir o Doris BE com: USE_AVX2=0 sh Execute o comando para baixar: wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/ apachedoris-1.2.5-bin-x86_64-noavx2.tar.xz baixe a versão noavx2 , lembre-se de verificar se sua cpu suporta instruções AVX2 com antecedência [HY000][1105] errCode = 2, detailMessage = Não há scanNode Backend disponível... e 1 erro de relatórios duplicados será relatado . Neste momento, você precisa adicionar nós BE ao cluster; lembre-se que a linha de comando pode ser operada e conectada normalmente neste momento.

insira a descrição da imagem aqui

Adicionar nós BE ao cluster

Após conectar-se ao FE por meio do cliente MySQL, execute o seguinte SQL para adicionar o BE ao cluster

ALTER SYSTEM ADD BACKEND "192.168.50.186:9050";

explicação do comando

ALTER SYSTEM ADD BACKEND "be_host_ip:heartbeat_service_port";

be_host_ip: Este é o endereço IP do seu BE, que corresponde ao seu priority_networks em be.conf.
heartbeat_service_port: Esta é a porta de relatório de heartbeat do seu BE, que corresponde ao seu heartbeat_service_port em be.conf. O padrão é 9050.

Exibir o status de execução do BE

Você pode executar o seguinte comando na linha de comando do MySQL para verificar o status de execução do BE.

SHOW BACKENDS\G

O resultado é o seguinte:

*************************** 1. row ***************************
              BackendId: 10003
                Cluster: default_cluster
                     IP: 192.168.50.186
          HeartbeatPort: 9050
                 BePort: 9060
               HttpPort: 8040
               BrpcPort: 8060
          LastStartTime: 2023-06-26 15:58:19
          LastHeartbeat: 2023-06-26 15:58:38
                  Alive: true
   SystemDecommissioned: false
  ClusterDecommissioned: false
              TabletNum: 0
       DataUsedCapacity: 0.000
          AvailCapacity: 458.121 GB
          TotalCapacity: 491.151 GB
                UsedPct: 6.73 %
         MaxDiskUsedPct: 6.73 %
     RemoteUsedCapacity: 0.000
                    Tag: {
    
    "location" : "default"}
                 ErrMsg:
                Version: doris-1.2.5-rc01-Unknown
                 Status: {
    
    "lastSuccessReportTabletsTime":"2023-06-26 15:58:27","lastStreamLoadTime":-1,"isQueryDisabled"
:false,"isLoadDisabled":false}
HeartbeatFailureCounter: 0
               NodeRole: mix
1 row in set (0.10 sec)

1 carreira na série (0,10 seg)

Observação: neste momento, você pode usar o navicat para selecionar ferramentas como mysql para se conectar para gerenciar operações

  1. Alive : true indica que o nó está rodando normalmente

Pare o nó BE

Parar Doris BE pode ser feito com o seguinte comando

./bin/stop_be.sh

Criar tabela de dados

  1. criar um banco de dados
create database demo;
  1. Criar tabela de dados
use demo;

CREATE TABLE IF NOT EXISTS demo.example_tbl
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `date` DATE NOT NULL COMMENT "数据灌入日期时间",
    `city` VARCHAR(20) COMMENT "用户所在城市",
    `age` SMALLINT COMMENT "用户年龄",
    `sex` TINYINT COMMENT "用户性别",
    `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "用户最后一次访问时间",
    `cost` BIGINT SUM DEFAULT "0" COMMENT "用户总消费",
    `max_dwell_time` INT MAX DEFAULT "0" COMMENT "用户最大停留时间",
    `min_dwell_time` INT MIN DEFAULT "99999" COMMENT "用户最小停留时间"
)
AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
    "replication_allocation" = "tag.location.default: 1"
);

Neste momento, você pode adicionar os dados correspondentes à tabela, e a conexão navicat é mostrada na figura abaixo:
insira a descrição da imagem aqui

Alterar senha do banco de dados

Use o seguinte comando para modificar a senha do banco de dados:

ALTER USER root IDENTIFIED BY "12345";

Ele foi modificado e não pode fazer login. A senha é 12345. Digite a senha para fazer login com sucesso
insira a descrição da imagem aquiinsira a descrição da imagem aqui

insira a descrição da imagem aqui
A construção deste filme acabou, e a próxima parte construirá um modo de cluster com base nisso, o que é realmente muito simples.

Acho que você gosta

Origin blog.csdn.net/weixin_43114209/article/details/131395344
Recomendado
Clasificación