diff --git a/common/workunit/wujobq.cpp b/common/workunit/wujobq.cpp index 8470cb154fc..6ac786c5608 100644 --- a/common/workunit/wujobq.cpp +++ b/common/workunit/wujobq.cpp @@ -1122,11 +1122,19 @@ class CJobQueue: public CJobQueueBase, implements IJobQueue void disconnect() // signal no longer wil be dequeing (optional - done automatically on release) { Cconnlockblock block(this,true); - if (connected) { + if (connected) + { dounsubscribe(); - ForEachQueue(qd) { + ForEachQueue(qd) + { IPropertyTree *croot = queryClientRootSession(*qd); - croot->setPropInt64("@connected",croot->getPropInt64("@connected",0)-1); + unsigned connectedCount = croot->getPropInt64("@connected"); + if (connectedCount) // should never be 0, but guard JIC + connectedCount--; + if (connectedCount) + croot->setPropInt64("@connected", connectedCount); + else + qd->root->removeTree(croot); } connected = false; } diff --git a/dali/base/dasds.cpp b/dali/base/dasds.cpp index 6ba9f68ad82..01605fcdd99 100644 --- a/dali/base/dasds.cpp +++ b/dali/base/dasds.cpp @@ -4938,6 +4938,18 @@ void initializeInternals(IPropertyTree *root) root->addPropTree("Status/Servers",createPTree()); } +void clearStaleMeteData(IPropertyTree *root) +{ + // JobQueues + // Remove all Client entries from all queues. By definition they are stale (they should normally be removed when the client disconnects) + Owned jobQueues = root->getElements("JobQueues/Queue"); + ForEach(*jobQueues) + { + IPropertyTree &queue = jobQueues->query(); + while (queue.removeProp("Client")); + } +} + IPropertyTree *loadStore(const char *storeFilename, unsigned edition, IPTreeMaker *iMaker, unsigned crcValidation, bool logErrorsOnly=false, const bool *abort=NULL) { CHECKEDCRITICALBLOCK(loadStoreCrit, fakeCritTimeout); @@ -6543,6 +6555,7 @@ void CCovenSDSManager::loadStore(const char *storeName, const bool *abort) } Owned conn = connect("/", 0, RTM_INTERNAL, INFINITE); initializeInternals(conn->queryRoot()); + clearStaleMeteData(conn->queryRoot()); conn.clear(); initializeStorageGroups(oldEnvironment); } diff --git a/docs/PT_BR/ConfiguringHPCC/ConfiguringHPCC.xml b/docs/PT_BR/ConfiguringHPCC/ConfiguringHPCC.xml index f9ba3b272d4..45e356df861 100644 --- a/docs/PT_BR/ConfiguringHPCC/ConfiguringHPCC.xml +++ b/docs/PT_BR/ConfiguringHPCC/ConfiguringHPCC.xml @@ -799,8 +799,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi de Dali - - + Selecione Dali Server no painel Navigator no lado esquerdo. @@ -823,8 +822,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi fileref="images/GS-img01c.png"/> ícone do disco para salvar os atributos do - - + @@ -832,19 +830,16 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve os atributos do DaliServer. - - - + - - - + @@ -855,19 +850,16 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve os atributos que configuram como o Dali manipula o armazenamento de dados do sistema. - - - + - - - + @@ -877,17 +869,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve a aba DaliServer LDAP. - - - + - - - + @@ -911,17 +900,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve os atributos do DaliServerPlugin. - - - + - - - + @@ -934,9 +920,8 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Sistema para obter mais detalhes sobre como configurar um servidor Cassandra como um datastore do sistema. - - + @@ -976,15 +961,13 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi prefixsize - - Um valor inteiro especificando o número mínimo de - caracteres que devem ser fornecidos ao procurar curingas - no repositório. Valores maiores serão mais eficientes , - mas também mais restritivos para os usuários. O padrão é - 2. Assim como o partitions, este valor só entra em vigor - quando um novo repositório da workunit do Cassandra é - criado. - + Um valor inteiro especificando o número + mínimo de caracteres que devem ser fornecidos ao procurar + curingas no repositório. Valores maiores serão mais + eficientes , mas também mais restritivos para os usuários. + O padrão é 2. Assim como o partitions, este valor só entra + em vigor quando um novo repositório da workunit do + Cassandra é criado. @@ -1011,8 +994,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - + @@ -1046,9 +1028,8 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Select All e depois pressione o botão OK . - - - + @@ -1065,17 +1046,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve os atributos do Dafilesrv. - - - + - - - + @@ -1113,17 +1091,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve os atributos do DfuServer. - - - + - - - + @@ -1131,17 +1106,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve as opções DfuServer SSH. - - - + - - - + @@ -1161,9 +1133,8 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi componentes com objetivo de determinar os diretórios que eles usarão para várias funções. - - - + @@ -1171,7 +1142,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - + Nome @@ -1179,11 +1150,11 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Descrição + + - - log - + log /var/log/[NAME]/[INST] @@ -1191,9 +1162,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - temp - + temp /var/lib/[NAME]/[INST]/temp @@ -1201,9 +1170,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - data - + data @@ -1211,9 +1178,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - data2 - + data2 @@ -1222,9 +1187,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - data3 - + data3 @@ -1232,9 +1195,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - mirror - + mirror @@ -1242,9 +1203,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi - - query - + query @@ -1270,8 +1229,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Adicionar uma Drop Zone: - - + Clique com o botão direito do mouse no painel Navigator, no lado esquerdo, e escolha New @@ -1282,8 +1240,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Selecione Drop Zone - - + Atributos da Drop Zone @@ -1295,8 +1252,7 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Para alterar os atributos da Drop Zone: - - + Na abaAttributes, selecione o atributo a ser modificado. @@ -1315,18 +1271,14 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Clique no ícone de disco para salvar. - - + - - - + - - - + - - - + @@ -1455,1665 +1405,1755 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi Esta seção descreve a aba EclAgent Options. - - - + - - - - + + Programas PIPE permitidos + + Na versão 9.2.0 e superior, os comandos usados numa ação + PIPE são restritos por padrão. No entanto, por razões de legado, + o comportamento padrão de estoque é diferente em implantações + bare-metal (em ambiente físico) e containerizadas. Em ambos os + tipos de sistemas, se allowedPipePrograms não estiver definido, + então todos os programas, exceto os "built-in", são restritos (O + único programa incorporado atualmente é o 'roxiepipe'). + + Em bare-metal, o environment.xml padrão inclui um valor de + configuração de "*" para allowedPipePrograms. Significa, por + padrão, que qualquer programa PIPE pode ser utilizado. - - Notas sobre EclAgent Process + + Em um sistema seguro, isso deve ser + removido ou editado para evitar que programas arbitrários, + incluindo programas de sistema, de serem + executados. + - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - + + + Notas sobre EclAgent Process + + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + ECL CC Server Process + + + Instâncias do Ecl CC Server + + + + + Selecione Ecl CC Server - myeclccserver no painel + Navigator no lado esquerdo. + + + + Selecione a aba Instances. + + + + Na coluna do computador, escolha um nó da lista + suspensa, conforme mostrado abaixo: + + + + Clique no ícone do disco para salvar + + + + + + + a aba Atributos do Ecl CC Server + + Esta seção descreve a aba Ecl CC Server + Attributes. + + + + + + + + + + + + + + Opções do EclCC Server Process + + Para adicionar uma opção personalizada, clique com o + botão direito e selecione adicionar. Essas opções são passadas + para o compilador eclcc. + + Veja o capítulo Compilador ECL no manual de Ferramentas do Cliente para + detalhes. + + + + + + + + Notas sobre EclCC Server Process + + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + ECL Scheduler + + + Instâncias + + + + Selecione ECL + Scheduler no painel Navigator ao lado + esquerdo. + - - ECL CC Server Process + + Selecione a aba Instances. + - - Instâncias do Ecl CC Server + + Na coluna do computador, escolha um nó da lista + suspensa, conforme mostrado abaixo: + - - - - Selecione Ecl CC Server - myeclccserver no painel - Navigator no lado esquerdo. - + + Clique no ícone do disco para salvar a + aba + + + - - Selecione a aba Instances. - + + EclScheduler Attributes. - - Na coluna do computador, escolha um nó da lista - suspensa, conforme mostrado abaixo: - + Esta seção descreve a aba EclScheduler + Attributes. - - Clique no ícone do disco para salvar - - - - + + + - - a aba Atributos do Ecl CC Server + - Esta seção descreve a aba Ecl CC Server Attributes. + + + + - - - + + Notas sobre EclScheduler - + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + ESP Server - - - - + + Instâncias do Esp Process - - Opções do EclCC Server Process + + + Selecione ESP - + myespno painel Navigator do lado + esquerdo. + - Para adicionar uma opção personalizada, clique com o botão - direito e selecione adicionar. Essas opções são passadas para o - compilador eclcc. + + Selecione a aba Instances. + - Veja o capítulo Compilador ECL no manual de Ferramentas do Cliente para - detalhes. + + Na coluna do computador, escolha um nó da lista + suspensa, conforme mostrado abaixo: + - + + Clique no ícone do disco para + salvar + + + - - + - - Notas sobre EclCC Server Process + - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - + + Esp - myesp Attributes - - ECL Scheduler + Esta seção descreve a aba Esp - myesp Attributes. - - Instâncias + + + - - - Selecione ECL Scheduler - no painel Navigator ao lado esquerdo. - + - - Selecione a aba Instances. - + + + - - Na coluna do computador, escolha um nó da lista suspensa, - conforme mostrado abaixo: - + - - Clique no ícone do disco para salvar a aba - - - + As conexões HTTP persistentes podem causar problemas de + compatibilidade com versões anteriores com clientes HTTP não + padrão. Você pode desativar esse recurso definindo + maxPersistentRequests como 0. + - - EclScheduler Attributes. + + Esp - myesp Service Bindings - Esta seção descreve a aba EclScheduler Attributes. + Esta seção descreve a aba Esp - myesp Service Bindings. + É necessários etapas adicionais para configurar as conexões do + serviço. - - - + + + - + Você deve primeiro adicionar as ligações de serviço na + primeira tabela (botão direito do mouse, Add). Em seguida, + você configuraria os atributos nas outras tabelas nessa aba. A + tabela a seguir descreve a tabela URL + Authentication - - - - + - - Notas sobre EclScheduler + + + - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - + - - ESP Server + As tabelas a seguir descrevem as ESPProcess Service + Bindings e funcionalidades de + autenticação. - - Instâncias do Esp Process + - - - Selecione ESP - myespno - painel Navigator do lado esquerdo. - + + + - - Selecione a aba Instances. - + + - - Na coluna do computador, escolha um nó da lista suspensa, - conforme mostrado abaixo: - + + - - Clique no - ícone do disco para salvar - - - + + - + - + + Para adicionar flags de acesso a + recursos a uma configuração preexistente do ECL + Watch: + - - Esp - myesp Attributes + Se você atualizar a plataforma, mas estiver usando uma + configuração preexistente, poderá encontrar uma situação em que + as flags de acesso de nível de recurso não sejam criadas + automaticamente. Flags ausentes podem negar acesso a usuários + que tentam acessar recursos no sistema. - Esta seção descreve a aba Esp - myesp Attributes. + + + No Configuration Manager, abra sua cópia do arquivo + environment.xml e habilite Write + Access. + - - - + + À esquerda, selecione o ESP que tá hosteando o serviço + ECL Watch. + - + + À direita, selecione a aba ESP Service + Bindings. - - - + Manualmente adicione a flad de acesso ao novo serviço + na tabela Feature Authentication. + - + + Clique com botão direito no tabela Feature + Authentication e selecione Add - As conexões HTTP persistentes podem causar problemas de - compatibilidade com versões anteriores com clientes HTTP não padrão. - Você pode desativar esse recurso definindo - maxPersistentRequests como 0. - + + + + - - Esp - myesp Service Bindings + + Providencie os valores para path e resource + (normalmente o mesmo valor, por exemplo, + WsStoreAccess). + - Esta seção descreve a aba Esp - myesp Service Bindings. É - necessários etapas adicionais para configurar as conexões do - serviço. + + Clique no ícone para salvar + - - - + + Copie o arquivo para cada nó, em seguida reinice o + sistema. - Você deve primeiro adicionar as ligações de serviço na - primeira tabela (botão direito do mouse, Add). Em seguida, você - configuraria os atributos nas outras tabelas nessa aba. A tabela a - seguir descreve a tabela URL - Authentication + As OUs devem ser criadas automaticamente no LDAP após + o reinicio. + + - + + Esp - myesp Authentication - - - + Esta seção descreve a aba Esp - myesp Service + Authentication - + + + - As tabelas a seguir descrevem as ESPProcess Service Bindings e - funcionalidades de - autenticação. + - + + + - - - + - - + Informações adicionais sobre os métodos de autenticação + disponíveis: - - + + + + - - + - + + + none - - Para adicionar flags de acesso a recursos a - uma configuração preexistente do ECL Watch: - + não utiliza autenticação + - Se você atualizar a plataforma, mas estiver usando uma - configuração preexistente, poderá encontrar uma situação em que as - flags de acesso de nível de recurso não sejam criadas automaticamente. - Flags ausentes podem negar acesso a usuários que tentam acessar - recursos no sistema. + + ldap - - - No Configuration Manager, abra sua cópia do arquivo - environment.xml e habilite Write - Access. - + usa o protocolo Lightweight Directory Access + para autenticação + - - À esquerda, selecione o ESP que tá hosteando o serviço ECL - Watch. - + + ldaps - - À direita, selecione a aba ESP Service - Bindings. + semelhante ao LDAP, mas usa um protocolo mais + seguro (TLS) + - Manualmente adicione a flad de acesso ao novo serviço na - tabela Feature Authentication. - + + secmgrPlugin - - Clique com botão direito no tabela Feature Authentication e - selecione Add + utilizado para configurar o Security Manager + Plugin + + + + + + - - - - + + Esp - AuthDomain - - Providencie os valores para path e resource (normalmente o - mesmo valor, por exemplo, WsStoreAccess). - + - - Clique no ícone para salvar - + O atributo AuthDomain + permite definir as configurações usadas para o gerenciamento + de sessões. - - Copie o arquivo para cada nó, em seguida reinice o - sistema. + - As OUs devem ser criadas automaticamente no LDAP após o - reinicio. - - + + + + + Esp - myesp HTTPS + + Esta seção descreve os atributos do Aba Esp - myesp + HTTPS. + + + + + + O atributo cipherList + permite que você defina a lista ordenada de cifras disponíveis + para uso pelo openssl. Veja a documentação em openssl.org para + mais informações sobre cifras. + + + + + + + + + + Notas sobre EspProcess + + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + ESP Services + + O ESP Services fornecem um meio para adicionar + funcionalidade a um ESP Server. + + + ECL Watch Service + + O Ecl Watch permite que você configure opções para o + utilitário ECL Watch. + + + + + + + Definições do atributo ECL + Watch. + + + + + + + - - Esp - myesp Authentication + + Atributos do ECL Watch + Monitoring + + + - Esta seção descreve a aba Esp - myesp Service - Authentication + + + + + + Configurando a integração do ELK Log + Visualization + - - - + O HPCC Systems fornece um mecanismo para integrar + visualizações baseadas em ELK (ElasticSearch, Logstash e + Kibana) no ECL Watch. Esse recurso pode ser configurado e + ativado pelo gerenciador do HPCC Configuration Manager + + Para configurar o componente ELK Log Visualization, + clique e expanda o link ESP + Service no lado esquerdo e selecione o + link EclWatch . Em seguida, + selecione a aba Elk Log + Visualization no lado direito. + + A aba ELK Log Visualization no ECL Watch: + + + + + + Para configurar a integração de visualização ELK, + forneça as seguintes informações: + + No campo kibanaAddress, + forneça o endereço IP do seu componente Kibana. Por + exemplo: http://123.123.123.123 + + + + No campo kibanaPort, forneça + o número da porta Kibana. Por exemplo: 5601 + + + + No campo kibanaEntryPointURI, + insira o URI do Kibana apontando para o painel do Kibana + compartilhado. + + Por exemplo: /app/kibana#/dashboard/etc. (obtido + na aba “share" em Kibana) + + + + + + + + WsECL Service + + O serviço WsECL permite configurar opções para o + utilitário WsECL. + + + + + + Os atributos de configuração do Ws ECL. + + + + + + + + + + Opções dos atributos Ws ECL VIPS. + + + + + + + + Tabela de Restrições do Ws ECL Target + + + + + + + + + + Ws_Store + + Uma instância do ws_store está incluída no ECL Watch, + mas você pode optar por adicionar outro serviço ESP ws_store à + sua plataforma HPCC Systems. + + Para adicionar o serviço Ws_Store. + + + + Clique com o botão direito do mouse no componente + Software no painel + Navegador (no lado + direito), escolha New ESP Services + e, em seguida, ws_store na lista + suspensa. + + + + Configure os atributos ws_store conforme + necessário. + + + + Clique no ícone de disco para + salvar. + + Os seguintes valores são os atributos + configuráveis para ws_store: + + + + + + + + + + Ws_SQL + + Você pode optar por adicionar o serviço ESP ws_sql à sua + plataforma HPCC Systems. + + Para adicionar o serviço ws_sql. + + + + + Clique com o botão direito do mouse no componente + Software no painel + Navigator (no lado + direito), escolha New ESP Services + e, em seguida, ws_sql na lista suspensa. + + + + Configure o ws_sql fornecendo o nome do + serviço. + + + + Clique no ícone do disco para + salvar o + + + + + + FTSlave Process. + + FTSlave é um processo auxiliar que todo nó precisa. Esta + seção descreve uma instalação do FTSlave. + + + Instâncias + + + + Selecione ESP - MyEsp no painel do navegador ao lado + esquerdo. + - + + Selecione a aba Instances. + - - - + + - + Clique com o botão direito em uma máquina na coluna + do computador e selecione Add Instance. - Informações adicionais sobre os métodos de autenticação - disponíveis: + + + + - - - - + + - + Selecione todos os computadores da lista, depois + pressione o botão OK + . - - - none + + + + - não utiliza autenticação - + + Clique no ícone do disco para + salvar o + + + + + + FTSlave Process. + + Esta seção descreve a aba de atributos + FTSlaveProcess. + + + + + + + + + + Notas sobre FtSlave Process + + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + LDAP Server Process + + Esta seção descreve os atributos de configuração de uma + instalação do LDAPServer no ConfigManager. Para obter uma + descrição completa de como adicionar autenticação LDAP, consulte + a seção Usando autenticação LDAP no + documento Instalando e executando a + plataforma HPCC Systems. - - ldap + + + - usa o protocolo Lightweight Directory Access para - autenticação - + - - ldaps + - semelhante ao LDAP, mas usa um protocolo mais - seguro (TLS) - + + LDAP Server Process Instances - - secmgrPlugin + Essa aba permite adicionar instâncias à sua configuração + LDAP. Para adicionar instâncias, você teria adicionado + anteriormente os computadores LDAP na seção Hardware. Para + obter uma descrição completa de como adicionar autenticação + LDAP, consulte a seção Usando autenticação LDAP no + documento Instalando e + executando a plataforma HPCC Systems. - utilizado para configurar o Security Manager - Plugin - - - - - - + + + Na aba Instances, + clique com o botão direito na tabela à direita e selecione + Add Instances... + - - Esp - AuthDomain + + Selecione o computador a ser usado clicando na caixa + ao lado dele. - + Este é o computador que foi adicionado anteriormente + na área Hardware / + Add New Computers. + + + + + + A conta do administrador do HPCC Systems + + Você pode configurar uma conta de administrador do HPCC + Systems com direitos administrativos limitados. O + administrador do HPCC Systems não precisa ser uma conta de + administrador LDAP. Isso permite que o administrador do HPCC + System possa configurar usuários, grupos e definir permissões + no HPCC Systems sem ter direitos para executar outras funções + administrativas do LDAP. Para usar este recurso: + + Crie um grupo LDAP para conter todos os usuários + do administrador do HPCC. Por exemplo: + "HPCCAdminGroup" + + + + No gerenciador de configuração HPCC Systems, + navegue até esta página (LDAP Server Process) e insira o + nome do grupo Administrador HPCC Systems como o valor no + campo adminGroupName. + + + + Adicione usuários (Administrador do HPCC Systems) + a este novo grupo. + + + + Salve e implemente o novo arquivo de configuração + e reinicie o ESP para aplicar a nova + configuração. + + + + + + Notas sobre LDAP Server Process + + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + Sasha Server + + + Instâncias + + + + Selecione Sasha Server no menu do lado + esquerdo. + - O atributo AuthDomain permite - definir as configurações usadas para o gerenciamento de - sessões. + + Selecione a aba Instances. + - + + Na coluna do computador, escolha um nó da lista + suspensa, conforme mostrado abaixo: + + - - + + - - Esp - myesp HTTPS + + Atributos Sasha Server - Esta seção descreve os atributos do Aba Esp - myesp - HTTPS. + - - - + Esta seção descreve os valores da aba + SashaServerProcessAttribute. - O atributo cipherList permite - que você defina a lista ordenada de cifras disponíveis para uso pelo - openssl. Veja a documentação em openssl.org para mais informações - sobre cifras. + - + - - - - + + + + - - Notas sobre EspProcess + - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - + + SashaServer Process Archiver - - ESP Services + Esta seção descreve a aba SashaServer Process + Archiver - O ESP Services fornecem um meio para adicionar funcionalidade a - um ESP Server. + + + - - ECL Watch Service + - O Ecl Watch permite que você configure opções para o - utilitário ECL Watch. + + + - - - + + - - Definições do atributo ECL Watch. - + + SashaServer Process Coalescer - + Esta seção descreve a aba SashaServer Process + Coalescer - - - + + + - - Atributos do ECL Watch Monitoring - + - + + + + - - - + - - Configurando a integração do ELK Log - Visualization - + + SashaServer Process DfuXRef - O HPCC Systems fornece um mecanismo para integrar - visualizações baseadas em ELK (ElasticSearch, Logstash e Kibana) no - ECL Watch. Esse recurso pode ser configurado e ativado pelo - gerenciador do HPCC Configuration Manager + Esta seção descreve a aba SashaServer Process + DfuXref - Para configurar o componente ELK Log Visualization, clique e - expanda o link ESP Service no lado - esquerdo e selecione o link - EclWatch . Em seguida, selecione a aba Elk Log Visualization no lado direito. + + + - A aba ELK Log Visualization no ECL Watch: + - - - + + + + - Para configurar a integração de visualização ELK, forneça as - seguintes informações: - - No campo kibanaAddress, forneça o - endereço IP do seu componente Kibana. Por exemplo: - http://123.123.123.123 - + - - No campo kibanaPort, forneça o - número da porta Kibana. Por exemplo: 5601 - + + SashaServer Process DfuExpiry - - No campo kibanaEntryPointURI, - insira o URI do Kibana apontando para o painel do Kibana - compartilhado. + Esta seção descreve a aba SashaServer Process + DfuExpiry - Por exemplo: /app/kibana#/dashboard/etc. (obtido na aba - “share" em Kibana) - - + + + - - + - - WsECL Service + - O serviço WsECL permite configurar opções para o utilitário - WsECL. + + + + - - - + - Os atributos de configuração do Ws ECL. + + SashaServer Process ThorQMon - + Esta seção descreve a aba SashaServer Process + ThorQMon - - - + + + - + - Opções dos atributos Ws ECL VIPS. + + + + - + - - - + + SashaServer Process DaFileSrvMonitor - Tabela de Restrições do Ws ECL Target + Esta seção descreve a aba SashaServer Process + DaFileSrvMonitor - + + + - - - - + - - Ws_Store + + + + - Uma instância do ws_store está incluída no ECL Watch, mas você - pode optar por adicionar outro serviço ESP ws_store à sua plataforma - HPCC Systems. + + Notas sobre SashaServer Process - Para adicionar o serviço Ws_Store. + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + Thor - - - Clique com o botão direito do mouse no componente - Software no painel Navegador (no lado direito), escolha - New ESP Services e, em - seguida, ws_store na lista - suspensa. - + Esta seção detalha como definir um cluster de refinaria de + dados (Thor). Antes de começar, você deve decidir a largura do + cluster (ou seja, quantos nós filhos você terá). - - Configure os atributos ws_store conforme - necessário. - + + + Selecione Thor Cluster - + mythor no painel Navigator no lado + esquerdo. + - - Clique no ícone de disco para salvar. - - Os seguintes valores são os atributos configuráveis - para ws_store: - - - - - - - - - - Ws_SQL - - Você pode optar por adicionar o serviço ESP ws_sql à sua - plataforma HPCC Systems. - - Para adicionar o serviço ws_sql. - - - - - Clique com o botão direito do mouse no componente - Software no painel Navigator (no lado direito), escolha - New ESP Services e, em - seguida, ws_sql na lista - suspensa. - - - - Configure o ws_sql fornecendo o nome do serviço. - - - - Clique no ícone do disco para salvar - o - - - - - - - - FTSlave Process. - - FTSlave é um processo auxiliar que todo nó precisa. Esta seção - descreve uma instalação do FTSlave. - - - Instâncias - - - - Selecione ESP - MyEsp no painel do navegador ao lado - esquerdo. - - - - Selecione a aba Instances. - - - - - - Clique com o botão direito em uma máquina na coluna do - computador e selecione Add Instance. - - - - - - - - - - Selecione todos os computadores da lista, depois pressione - o botão OK . - - - - - - - - Clique no - ícone do disco para salvar o - - - - - - FTSlave Process. - - Esta seção descreve a aba de atributos FTSlaveProcess. - - - - - - - - - - Notas sobre FtSlave Process - - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - - - - LDAP Server Process - - Esta seção descreve os atributos de configuração de uma - instalação do LDAPServer no ConfigManager. Para obter uma descrição - completa de como adicionar autenticação LDAP, consulte a seção - Usando autenticação LDAP no documento Instalando e executando a - plataforma HPCC Systems. - - - - - - - - - - - LDAP Server Process Instances - - Essa aba permite adicionar instâncias à sua configuração LDAP. - Para adicionar instâncias, você teria adicionado anteriormente os - computadores LDAP na seção Hardware. Para obter uma descrição - completa de como adicionar autenticação LDAP, consulte a seção - Usando autenticação LDAP no documento Instalando e executando a plataforma HPCC - Systems. - - - - Na aba Instances, clique - com o botão direito na tabela à direita e selecione Add Instances... - - - - Selecione o computador a ser usado clicando na caixa ao - lado dele. - - Este é o computador que foi adicionado anteriormente na - área Hardware / Add New Computers. - - - - - - A conta do administrador do HPCC Systems - - Você pode configurar uma conta de administrador do HPCC - Systems com direitos administrativos limitados. O administrador do - HPCC Systems não precisa ser uma conta de administrador LDAP. Isso - permite que o administrador do HPCC System possa configurar - usuários, grupos e definir permissões no HPCC Systems sem ter - direitos para executar outras funções administrativas do LDAP. Para - usar este recurso: - - Crie um grupo LDAP para conter todos os usuários do - administrador do HPCC. Por exemplo: "HPCCAdminGroup" - - - - No gerenciador de configuração HPCC Systems, navegue até - esta página (LDAP Server Process) e insira o nome do grupo - Administrador HPCC Systems como o valor no campo adminGroupName. - - - - Adicione usuários (Administrador do HPCC Systems) a este - novo grupo. - - - - Salve e implemente o novo arquivo de configuração e - reinicie o ESP para aplicar a nova configuração. - - - - - - Notas sobre LDAP Server Process - - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - - - - Sasha Server - - - Instâncias - - - - Selecione Sasha Server no menu do lado esquerdo. - - - - Selecione a aba Instances. - - - - Na coluna do computador, escolha um nó da lista suspensa, - conforme mostrado abaixo: - - - - - - - - Atributos Sasha Server - - - - Esta seção descreve os valores da aba - SashaServerProcessAttribute. - - - - - - - - - - - - - - SashaServer Process Archiver - - Esta seção descreve a aba SashaServer Process Archiver - - - - + + Selecione a aba + Topology . + - + + Expanda a Topology, se necessário, clique com o botão + direito do mouse no Master e selecione Delete. + + - - - + Isso exclui o Thor de um nó de amostra. - - + Você irá substituir isso por um cluster de vários + nós. - - SashaServer Process Coalescer + + + - Esta seção descreve a aba SashaServer Process Coalescer + Clique com o botão direito do mouse na Topologia e + selecione Add Master. - - - + + + + - + + - - - - + Selecione um computador na lista e pressione o botão + OK. - + + + + - - SashaServer Process DfuXRef + + - Esta seção descreve a aba SashaServer Process DfuXref + Clique com o botão direito no mestre e selecione Add + Slaves. - - - + + + + - + + - - - - + Selecione os computadores a serem usados como filhos + na lista e pressione o botão OK. Use CTRL+CLICK para + multi-seleção ou SHIFT+CLICK para selecionar um + intervalo. - + Os nós agora são exibidos abaixo do nó + do Thor Master. - - SashaServer Process DfuExpiry + + + + - Esta seção descreve a aba SashaServer Process DfuExpiry + + Selecione Thor Cluster - mythor no painel Navigator no + lado esquerdo. + - - - + + - + Selecione a aba Attributes. - + + + + - - - - + + É possível alterar o valor localThor para false + - + + Clique no ícone do disco para + salvar + + - - SashaServer Process ThorQMon + - Esta seção descreve a aba SashaServer Process ThorQMon + + a alteração da topologia do Thor - - - + Se você deseja designar um nó diferente como o mestre + Thor ao configurar um sistema de vários nós, siga estas + etapas. - + + + Selecione Thor Cluster - + mythor no painel do Navigator ao lado + esquerdo. + - - - - + + Selecione a aba + Topology . + - + + Clique com o botão direito do mouse no nó + mestre + - - SashaServer Process DaFileSrvMonitor + + + + Selecione a opção Replace + Master + + + + + + + + + + + + + + + + + + + + + Você só deve usar esse recurso quando + configurar inicialmente seu sistema. Se houver dados + nos nós ao tentar trocar o mestre, você corre o + risco de perder ou corromper alguns dados. + + + + + + + + + + + + + Atributos ThorCluster + + Esta seção descreve a aba Thor Cluster + Attributes. + + + + + + + Configurações de Memória do Thor + + Quando o globalMemorySize é deixado + indefinido, Thor [master] detecta a memória física total e + aloca 75% dela. Se houver múltiplos escravos por nó + (slavesPerNode>1), ele divide o total entre os escravos. + Se globalMemorySize for definido, ele aloca a quantidade de + memória para cada slave. O atributo masterMemorySize aloca + memória para o mestre Thor. Se omitido, o Thor master usa + globalMemorySize ou o padrão 75% de memória. + + Em sistemas com muita memória, o padrão de 75% da + memória física é provavelmente muito conservador e reservar + o total físico menos 2GB (para o SO e outros processos) é + sensato. Você deve então dividir esse número pelo número de + slavesPerNode. + + Se houver vários Thors compartilhando os mesmos nós, o + globalMemorySize deverá ser configurado para levar isso em + conta. + + Por exemplo, se houver 2 Thors, cada um com 2 escravos + por caixa, isso significará que há 4 escravos por nó físico. + Portanto, você deve usar uma fórmula semelhante à seguinte + em seus cálculos ao configurar globalMemorySize: + + globalMemorySize = (total-physical-memory)-2GB / (2*2) + + Sem nenhuma configuração especificada, o Thor assume + que tem acesso exclusivo à memória e, portanto, usaria muito + (porque cada Thor não está ciente da configuração e uso de + memória do outro). + + Se localThor estiver + configurado como true e masterMemorySize e globalMemorySize não forem + especificados, os padrões serão 50% para globalMemorySize (dividido por + slavesPerNode) e 25% para + masterMemorySize. + + Embora uma configuração possa ser definida usando + limites de memória superiores que excedam a memória física + total, o Thor não reservará a memória com antecedência. Isso + somente ocorrerá em casos de problemas de memória quando e + se seus jobs usarem toda a memória. Portanto, por exemplo, + dois Thors configurados para usar toda a memória disponível + podem coexistir pacificamente até que uma consulta em cada + um esteja usando simultaneamente mais memória do que o nó + disponível. + + + + + + + + + + + Programas PIPE permitidos + + Na versão 9.2.0 e superior, os comandos usados numa ação + PIPE são restritos por padrão. No entanto, por razões de + legado, o comportamento padrão de estoque é diferente em + implantações bare-metal (em ambiente físico) e + containerizadas. Em ambos os tipos de sistemas, se + allowedPipePrograms não estiver definido, então todos os + programas, exceto os "built-in", são restritos (O único + programa incorporado atualmente é o 'roxiepipe'). + + Em bare-metal, o environment.xml padrão inclui um valor + de configuração de "*" para allowedPipePrograms. Significa, por + padrão, que qualquer programa PIPE pode ser utilizado. + + + Em um sistema seguro, isso deve ser + removido ou editado para evitar que programas arbitrários, + incluindo programas de sistema, de serem + executados. + + + + - Esta seção descreve a aba SashaServer Process - DaFileSrvMonitor + - - - + + Opções do SSH ThorCluster - + Esta seção descreve a aba ThorCluster SSH + Options. - - - - + + + - - Notas sobre SashaServer Process + - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - + + + + - - Thor + + Depuração do ThorCluster - Esta seção detalha como definir um cluster de refinaria de dados - (Thor). Antes de começar, você deve decidir a largura do cluster (ou - seja, quantos nós filhos você terá). + A aba de depuração é somente para uso interno. + - - - Selecione Thor Cluster - - mythor no painel Navigator no lado esquerdo. - + - - Selecione a aba Topology - . - + + Nó Swap ThorCluster - - Expanda a Topology, se necessário, clique com o botão - direito do mouse no Master e selecione Delete. - - + Esta seção descreve a aba ThorCluster Swap Node - Isso exclui o Thor de um nó de amostra. + + + - Você irá substituir isso por um cluster de vários nós. + - - - + + + + - Clique com o botão direito do mouse na Topologia e selecione - Add Master. + - - - - + + Notas sobre ThorCluster - - + Esta aba permite que você adicione notas pertinentes à + configuração do componente. Isso pode ser útil para manter um + registro de alterações e para comunicar essas informações aos + parceiros. + + + Roxie - Selecione um computador na lista e pressione o botão - OK. + Esta seção detalha como definir um cluster do Mecanismo de + Entrega Rápida de Dados (Rapid Data Delivery Engine - Roxie). + Antes de começar, você deve decidir a largura do cluster (ou + seja, quantos nós de agente você terá). - - - - + - - + + + Selecione Roxie + Cluster no painel do navegador ao lado + esquerdo. + + Observação: Se você + não especificou um valor no campo Number of nodes + for Roxie cluster (Número de nós para o cluster Roxie) + ao configurar seu ambiente pela primeira vez, + você não terá um Roxie Cluster. Para adicionar um componente + Roxie Cluster: Clique com o botão direito do mouse no + componente Software no + Painel Navigator, selecione New + Components e depois roxie nas listas suspensas. + - Clique com o botão direito no mestre e selecione Add - Slaves. + + Selecione a aba Servidores . + - - - - + + - - + Clique com o botão direito do mouse nos Servidores + Roxie e selecione Reconfigure + Servers. - Selecione os computadores a serem usados como filhos na - lista e pressione o botão OK. Use CTRL+CLICK para multi-seleção ou - SHIFT+CLICK para selecionar um intervalo. + + + + - Os nós agora são exibidos abaixo do nó do - Thor Master. + + - - - - + Selecione os computadores a serem usados como + servidores na lista e pressione o botão OK. - - Selecione Thor Cluster - mythor no painel Navigator no lado - esquerdo. - + + + + - - + + Selecione a aba + Redundancy . + - Selecione a aba Attributes. + + - - - - + Selecione o esquema de redundância a ser usado. + Normalmente, isso é redundância cíclica, conforme mostrado + abaixo. - - É possível alterar o valor localThor para false - + + + + - - Clique no - ícone do disco para salvar - - + + Clique no ícone do disco para + salvar + - + + Feche o Gerenciador de Configuração, pressionando + ctrl+C na janela de comando em que está sendo + executado. + + + + + Atributos de Configuração do Roxie + + O Roxie possui muitos atributos configuráveis que podem + ser usados para personalizar e ajustar suas necessidades + específicas. A seção a seguir se expande em cada uma das guias + Roxie e nos atributos disponíveis. Há informações adicionais + sobre a configuração do Roxie na seção imediatamente após + essas tabelas. + + + + + + + <sect3> + <title>Itens adicionais de Configuração Roxie + + + + + Conexões Persistentes para o + Roxie + + + As conexões persistentes podem causar problemas de + compatibilidade com versões anteriores com clientes HTTP não + padrão. Você pode desativar esse recurso definindo + maxHttpConnectionRequests como 0 ou + 1. + + Além disso, conexões persistentes podem afetar o + balanceamento de carga do Roxie. Se isso for uma preocupação, + você poderá ajustar os valores + maxHttpConnectionRequests e + maxHttpKeepAliveWait para otimizar por + quanto tempo todas as transações de uma conexão persistente + específica vão para um único nó, em vez de serem distribuídas + pelo cluster. + + + Adicionar servidores ao Roxie + Farm + + + Para adicionar servidores ao Roxie Farm + + + + Selecione o Roxie Cluster - + myroxie (padrão) na janela Navigator no lado + esquerdo. + + + + Selecione a aba Servidores . + + + + Clique com o botão direito do mouse em Roxie Servers. + + + + Selecione Reconfigure + Servers. + + + + Pressione o botão + Add Hardware. + + + + Digite os valores para os novo(s) servidore(s) na + caixa de diálogo e pressione OK. + + Todos os servidores configurados são usados + quando você cria uma porta para escutar. + + + + OBSERVAÇÃO + + + Se estiver trabalhando com um arquivo de ambiente + antigo, esse processo foi alterado. Você não precisa + mais especificar para um servidor usar uma porta + específica. + + + + + + + Redundância + + O Roxie pode ser configurado para utilizar alguns + modelos de redundância diferentes. + + Simple Redundancy - um canal por agente. Mais + comumente usado para um único nó Roxie. + + + + Full Redundancy - mais agente que o número de + canais. Vários agentes hospedam cada canal. + + + + Overloaded Redundancy - Existem vários canais por + agente. + + + + Cyclic Redundancy - Cada nó hospeda vários canais + em rotação. A configuração mais usada. + + + + + Topology + + Esta seção descreve a aba Topology. - - a alteração da topologia do Thor + + - Se você deseja designar um nó diferente como o mestre Thor ao - configurar um sistema de vários nós, siga estas etapas. + + + - - - Selecione Thor Cluster - - mythor no painel do Navigator ao lado - esquerdo. - + - - Selecione a aba Topology - . - + + + Nome do Atributo - - Clique com o botão direito do mouse no nó mestre - + Definição + - - + + + Topology + - Selecione a opção Replace - Master + descreve a topologia do sistema + - - - + + + Cluster - thor + - - - + descreve os clusters Thor + - - + + + Cluster - hthor + - + descreve os clusters de hThor + - - + Cluster - roxie - Você só deve usar esse recurso quando - configurar inicialmente seu sistema. Se houver dados - nos nós ao tentar trocar o mestre, você corre o risco - de perder ou corromper alguns dados. + descreve os clusters Roxie - - - - - - - - Atributos ThorCluster - - Esta seção descreve a aba Thor Cluster Attributes. - - - - - - - Configurações de Memória do Thor - - Quando o globalMemorySize é - deixado indefinido, Thor [master] detecta a memória física total e - aloca 75% dela. Se houver múltiplos escravos por nó - (slavesPerNode>1), ele divide o total entre os escravos. Se - globalMemorySize for definido, ele aloca a quantidade de memória - para cada slave. O atributo masterMemorySize aloca memória para o - mestre Thor. Se omitido, o Thor master usa globalMemorySize ou o - padrão 75% de memória. - - Em sistemas com muita memória, o padrão de 75% da memória - física é provavelmente muito conservador e reservar o total físico - menos 2GB (para o SO e outros processos) é sensato. Você deve - então dividir esse número pelo número de slavesPerNode. - - Se houver vários Thors compartilhando os mesmos nós, o - globalMemorySize deverá ser configurado para levar isso em - conta. - - Por exemplo, se houver 2 Thors, cada um com 2 escravos por - caixa, isso significará que há 4 escravos por nó físico. Portanto, - você deve usar uma fórmula semelhante à seguinte em seus cálculos - ao configurar globalMemorySize: - - globalMemorySize = (total-physical-memory)-2GB / (2*2) - - Sem nenhuma configuração especificada, o Thor assume que tem - acesso exclusivo à memória e, portanto, usaria muito (porque cada - Thor não está ciente da configuração e uso de memória do - outro). - - Se localThor estiver - configurado como true e masterMemorySize e globalMemorySize não forem especificados, - os padrões serão 50% para globalMemorySize (dividido por slavesPerNode) e 25% para masterMemorySize. - - Embora uma configuração possa ser definida usando limites de - memória superiores que excedam a memória física total, o Thor não - reservará a memória com antecedência. Isso somente ocorrerá em - casos de problemas de memória quando e se seus jobs usarem toda a - memória. Portanto, por exemplo, dois Thors configurados para usar - toda a memória disponível podem coexistir pacificamente até que - uma consulta em cada um esteja usando simultaneamente mais memória - do que o nó disponível. - - - - - - - - - - - - - - - Opções do SSH ThorCluster - - Esta seção descreve a aba ThorCluster SSH Options. - - - - - - - - - - - - - - Depuração do ThorCluster + + Topo Server - A aba de depuração é somente para uso interno. - - - - - - Nó Swap ThorCluster - - Esta seção descreve a aba ThorCluster Swap Node - - - - - - - - - - - - - - - - Notas sobre ThorCluster - - Esta aba permite que você adicione notas pertinentes à - configuração do componente. Isso pode ser útil para manter um - registro de alterações e para comunicar essas informações aos - parceiros. - - - - - Roxie - - Esta seção detalha como definir um cluster do Mecanismo de - Entrega Rápida de Dados (Rapid Data Delivery Engine - Roxie). Antes de - começar, você deve decidir a largura do cluster (ou seja, quantos nós - de agente você terá). - - - - - - Selecione Roxie Cluster no - painel do navegador ao lado esquerdo. - - Observação: Se você não - especificou um valor no campo Number of nodes for Roxie - cluster (Número de nós para o cluster Roxie) ao - configurar seu ambiente pela primeira vez, você não terá um Roxie - Cluster. Para adicionar um componente Roxie Cluster: Clique com o - botão direito do mouse no componente Software no Painel Navigator, selecione - New Components e depois roxie nas listas suspensas. - - - - Selecione a aba Servidores - . - + Esse processo TopoServer é configurado através do servidor + Topo Server - mytoposerver do Configuration + Manager. Você define as instâncias e, em seguida, define os + atributos de configuração. - - - - Clique com o botão direito do mouse nos Servidores Roxie e - selecione Reconfigure Servers. - - - - - - - - - - Selecione os computadores a serem usados como servidores na - lista e pressione o botão OK. - - - - - - - - Selecione a aba Redundancy - . - - - - - - Selecione o esquema de redundância a ser usado. Normalmente, - isso é redundância cíclica, conforme mostrado abaixo. - - - - - - - - Clique no - ícone do disco para salvar - - - - Feche o Gerenciador de Configuração, pressionando ctrl+C na - janela de comando em que está sendo executado. - - - - - Atributos de Configuração do Roxie - - O Roxie possui muitos atributos configuráveis que podem ser - usados para personalizar e ajustar suas necessidades específicas. A - seção a seguir se expande em cada uma das guias Roxie e nos - atributos disponíveis. Há informações adicionais sobre a - configuração do Roxie na seção imediatamente após essas - tabelas. - - - - - - - - - - - - - <sect3> - <title>Itens adicionais de Configuração Roxie - - - - - Conexões Persistentes para o - Roxie - - - As conexões persistentes podem causar problemas de - compatibilidade com versões anteriores com clientes HTTP não padrão. - Você pode desativar esse recurso definindo - maxHttpConnectionRequests como 0 ou 1. - - Além disso, conexões persistentes podem afetar o balanceamento - de carga do Roxie. Se isso for uma preocupação, você poderá ajustar - os valores maxHttpConnectionRequests e - maxHttpKeepAliveWait para otimizar por quanto - tempo todas as transações de uma conexão persistente específica vão - para um único nó, em vez de serem distribuídas pelo cluster. - - - Adicionar servidores ao Roxie - Farm - - - Para adicionar servidores ao Roxie Farm - - - - Selecione o Roxie Cluster - - myroxie (padrão) na janela Navigator no lado - esquerdo. - - - - Selecione a aba Servidores . - - - - Clique com o botão direito do mouse em Roxie Servers. - - - - Selecione Reconfigure - Servers. - - - - Pressione o botão Add - Hardware. - - - - Digite os valores para os novo(s) servidore(s) na caixa - de diálogo e pressione OK. - - Todos os servidores configurados são usados quando - você cria uma porta para escutar. - - - - OBSERVAÇÃO - - - Se estiver trabalhando com um arquivo de ambiente - antigo, esse processo foi alterado. Você não precisa mais - especificar para um servidor usar uma porta específica. - - - - - - - Redundância - - O Roxie pode ser configurado para utilizar alguns modelos de - redundância diferentes. - - Simple Redundancy - um canal por agente. Mais comumente - usado para um único nó Roxie. - - - - Full Redundancy - mais agente que o número de canais. - Vários agentes hospedam cada canal. - - - - Overloaded Redundancy - Existem vários canais por - agente. - - - - Cyclic Redundancy - Cada nó hospeda vários canais em - rotação. A configuração mais usada. - - - - - - - Topology - - Esta seção descreve a aba Topology. - - - - - - - - - - - - - Nome do Atributo - - Definição - - - - - Topology - - - descreve a topologia do sistema - - - - - Cluster - thor - - - descreve os clusters Thor - - - - - Cluster - hthor - - - descreve os clusters de hThor - - - - - Cluster - roxie - - - descreve os clusters Roxie - - - - - - - - - Topo Server - - Esse processo TopoServer é configurado através do servidor - Topo Server - mytoposerver do Configuration - Manager. Você define as instâncias e, em seguida, define os atributos - de configuração. - - - - - - - - - - - - Distribuir alterações na configuração para todos os nós + + + - Após ter configurado seu ambiente da forma desejada, é preciso - copiar o arquivo de configuração para os demais nós. + - + + + Distribuir alterações na configuração para todos os + nós - - - Se o sistema estiver em execução, pare o sistema. + Após ter configurado seu ambiente da forma desejada, é + preciso copiar o arquivo de configuração para os demais + nós. - - - + - - - - - - - - - - - - Certifique-se de que o HPCC System não esteja em - execução antes de tentar copiar o arquivo - Environment.xml. - - - - - - + + + Se o sistema estiver em execução, pare o + sistema. + + + + + + + + + + + + + + + + + Certifique-se de que o HPCC System não esteja + em execução antes de tentar copiar o arquivo + Environment.xml. + + + + + + - - Salve o arquivo environment.xml em um backup. + + Salve o arquivo environment.xml em um backup. - # por exemplo + # por exemplo sudo -u hpcc cp /etc/HPCCSystems/environment.xml /etc/HPCCSystems/environment.bak - Observação: o arquivo environment.xml do ambiente em - execução está localizado em seu diretório /etc/HPCCSystems/. O Gerenciador de - Configurações funciona em arquivos no diretório /etc/HPCCSystems/source. É necessário - copiar deste local para criar um arquivo environment.xml - ativo. - + Observação: o arquivo environment.xml do ambiente em + execução está localizado em seu diretório /etc/HPCCSystems/. O Gerenciador de + Configurações funciona em arquivos no diretório /etc/HPCCSystems/source. É necessário + copiar deste local para criar um arquivo environment.xml + ativo. + - - Copie o novo arquivo NewEnvironment.xml do diretório de - origem para /etc/HPCCSystems e renomeie o arquivo para - environment.xml + + Copie o novo arquivo NewEnvironment.xml do diretório + de origem para /etc/HPCCSystems e renomeie o arquivo para + environment.xml - # por exemplo + # por exemplo sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/environment.xml - - - - - Copie o /etc/HPCCSystems/environment.xml para o - /etc/HPCCSystems/ em cada nó. + + - - + + Copie o /etc/HPCCSystems/environment.xml para o + /etc/HPCCSystems/ em cada nó. + - - Inicie a plataforma do HPCC System - - Se preferir, use um script para automatizar essa etapa, - especialmente se você tiver muitos nós. Consulte a seção Scripts - de exemplo na seção Anexos do manual Como instalar e executar a - plataforma do HPCC System. É possível usar os scripts como um - modelo para criar seu próprio script e copiar o arquivo - environment.xml para todos os seus nós. - - + + Inicie a plataforma do HPCC System + + Se preferir, use um script para automatizar essa + etapa, especialmente se você tiver muitos nós. Consulte a + seção Scripts de exemplo na seção Anexos do manual Como + instalar e executar a plataforma do HPCC System. É possível + usar os scripts como um modelo para criar seu próprio script + e copiar o arquivo environment.xml para todos os seus + nós. + + + + diff --git a/docs/PT_BR/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml b/docs/PT_BR/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml index 546423e35f8..8f31dd9ff65 100644 --- a/docs/PT_BR/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml +++ b/docs/PT_BR/ContainerizedHPCC/ContainerizedHPCCSystemsPlatform.xml @@ -65,10 +65,11 @@ Visão geral do HPCC em contêineres - A partir da versão 8.0, a plataforma HPCC - Systems® focará em deploys em contêineres. Isso - é útil para implantações baseadas em nuvem (grandes ou pequenas) ou - implantações de teste/desenvolvimento locais. + Desde a versão 8.0, a Plataforma HPCC + Systems® começou a focar significativamente em + implantações containerizadas. Isso é útil para implantações baseadas em + nuvem (grandes ou pequenas) ou implantações de teste/desenvolvimento + local. Os contêineres do Docker gerenciados pelo Kubernetes (K8s) são um novo ambiente operacional de destino, juntamente com o suporte contínuo @@ -84,20 +85,19 @@ em como os componentes são configurados, como e quando eles iniciam e onde armazenam seus dados. - Este livro se concentra em implantações em contêineres. A primeira - seção é sobre o uso de contêineres Docker e gráficos Helm localmente. - Docker e Helm fazem muito do trabalho para você. A segunda parte usa as - mesmas técnicas na nuvem. + Este livro se concentra nessas implantações containerizadas. A + primeira seção é sobre o uso de contêineres Docker e gráficos Helm + localmente. Docker e Helm fazem muito do trabalho por você. A segunda + parte usa as mesmas técnicas na nuvem. Para pequenas implantações locais (para desenvolvimento e teste), sugerimos o uso de Docker Desktop e Helm. Isto é útil para aprendizagem, desenvolvimento e teste. - Para implantações em nuvem, você pode usar qualquer tipo de serviço - em nuvem, se for compatível com Docker, Kubernetes e Helm. Este livro, no - entanto, se concentrará no Microsoft Azure para serviços em nuvem. As - versões futuras podem incluir especificações para outros provedores de - nuvem. + Para implantações em nuvem, você pode utilizar qualquer tipo de + serviços de Cloud, desde que suporte Docker, Kubernetes e Helm. Este + livro, no entanto, vai focar nos Serviços de Nuvem da Microsoft + Azure. Se você deseja gerenciar manualmente sua implantação local ou na nuvem, ainda pode usar os instaladores tradicionais e o Configuration @@ -105,33 +105,17 @@ Helm fornecem, como instrumentação, monitoramento, escalonamento e custo ao controle. - Os sistemas HPCC seguem as convenções padrão sobre como as - implantações do Kubernetes são normalmente configuradas e gerenciadas, - portanto, deve ser fácil para alguém familiarizado com o Kubernetes e o - Helm instalar e gerenciar a plataforma HPCC Systems. - - - - Note: - - - A versão tradicional bare-metal da plataforma de sistemas HPCC - está madura e tem sido amplamente usada em aplicativos comerciais - por quase duas décadas e é totalmente destinada para uso em - produção. A versão em contêiner é nova e ainda não está 100% pronta - para produção. Além disso, alguns aspectos dessa versão podem ser - alterados sem aviso prévio. Nós encorajamos você a usá-lo e fornecer - feedback para que possamos tornar esta versão tão robusta quanto uma - instalação bare-metal. - - - + O HPCC Systems segue as convenções padrão sobre como as implantações + do Kubernetes são normalmente configuradas e gerenciadas, portanto, deve + ser fácil para alguém familiarizado com o Kubernetes e o Helm instalar e + gerenciar a plataforma HPCC Systems. Bare-metal vs Containers - Se você estiver familiarizado com a plataforma HPCC Systems, há - algumas mudanças fundamentais a serem observadas. + Se você está familiarizado com as implantações tradicionais da + plataforma HPCC Systems em bare-metal, há algumas mudanças fundamentais + a serem observadas. Processoss e pods, não máquinas diff --git a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ConfigureValues.xml b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ConfigureValues.xml index bd6474cd740..157e6ac5528 100644 --- a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ConfigureValues.xml +++ b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ConfigureValues.xml @@ -917,6 +917,42 @@ incluindo a categoria "ecl", são lidas internamente pelos componentes do sistema e não expostas diretamente ao código ECL. + + + Manipulação de Recursos de Origem Cruzada + + O compartilhamento de recursos de origem cruzada (CORS) é um + mecanismo para integrar aplicativos em diferentes domínios. CORS + define como as aplicações web do cliente em um domínio podem interagir + com recursos em outro domínio. Você pode configurar as configurações + de suporte ao CORS na seção ESP do arquivo values.yaml, conforme + ilustrado abaixo: + + esp: +- name: eclwatch + application: eclwatch + auth: ldap + replicas: 1 + # The following 'corsAllowed' section is used to configure CORS support + # origin - the origin to support CORS requests from + # headers - the headers to allow for the given origin via CORS + # methods - the HTTP methods to allow for the given origin via CORS + # + corsAllowed: + # origin starting with https will only allow https CORS + - origin: https://*.example2.com + headers: + - "X-Custom-Header" + methods: + - "GET" + # origin starting with http will allow http or https CORS + - origin: http://www.example.com + headers: + - "*" + methods: + - "GET" + - "POST" + @@ -943,7 +979,7 @@ - Resources + Recursos A maioria dos componentes tem uma seção de recursos que define quantos recursos são atribuídos a esse componente. Nos arquivos de @@ -969,17 +1005,17 @@ manager, worker e eclagent têm requisitos de recursos diferentes. + - - Taints, Tolerations e Placements + + Valores do Ambiente + + Você pode definir variáveis de ambiente em um arquivo YAML. Os + valores do ambiente são definidos na seção + global.env do arquivo values.yaml fornecido + peloHPCC Systems. Esses valores são especificados como uma lista de + pares de nome-valor, conforme ilustrado abaixo. - Esta é uma consideração importante para sistemas em contêineres. - Taints e Tolerations são tipos de restrições de nó do Kubernetes - também referidas por Node Affinity. A - afinidade do nó é uma maneira de restringir os pods aos nós. Apenas - uma "afinidade" pode ser aplicada a um pod. Se um pod corresponder a - várias listas de "pods" de canais, somente a última definição de - "afinidade" será aplicada. Os taints e as tolerations trabalham juntos para garantir que os pods não sejam agendados em nós inadequados. As tolerâncias são @@ -1060,7 +1096,7 @@ posicionamentos para garantir que os pods com requisitos específicos sejam colocados nos nós apropriados. - + Environment Values @@ -1072,19 +1108,628 @@ conforme ilustrado abaixo. global: + + global: +bbe9bd8001 (HPCC-32050 -HPCC Portuguese language Update 9.6) env: - name: SMTPserver value: mysmtpserver - A seção global.env do arquivo values.yaml fornecido adiciona - variáveis de ambiente padrão para todos os componentes. Você também - pode especificar variáveis de ambiente para os componentes - individuais. Consulte o schema para definir esse valor para - componentes individuais. + A seção global.env do arquivo values.yaml fornecido adiciona + variáveis de ambiente padrão para todos os componentes. Você também pode + especificar variáveis de ambiente para os componentes individuais. + Consulte o esquema para definir este valor para componentes + individuais. + + Para adicionar valores de ambiente, você pode inseri-los em seu + arquivo YAML de configurações personalizadas ao implantar o HPCC Systems + conteinerizados. Esta solicitação é baseada na conversa anterior. + + + Variáveis de Ambiente para Sistemas Containerizados + + Existem várias configurações em environment.conf para sistemas + bare-metal. Embora muitas configurações de environment.conf não sejam + válidas para contêineres, algumas podem ser úteis. Em uma implantação + em nuvem, essas configurações são herdadas de variáveis de ambiente. + Essas variáveis de ambiente são configuráveis usando o arquivo yaml + values, seja globalmente ou no nível do componente. + + Algumas dessas variáveis estão disponíveis para implementações + em contêiner e na nuvem e podem ser definidas usando o chart Helm. Os + seguintes valores de environment.conf para bare-metal têm esses + valores equivalentes que podem ser definidos para instâncias + conteinerizadas. Esta solicitação é baseada na conversa + anterior. + + + + + + Valor + Environment.conf + + Variavel Helm + Environment + + + + skipPythonCleanup + + SKIP_PYTHON_CLEANUP + + + + jvmlibpath + + JAVA_LIBRARY_PATH + + + + jvmoptions + + JVM_OPTIONS + + + + classpath + + CLASSPATH + + + + + + O seguinte exemplo configura uma variavel de ambiente para pular + a limpeza do Python no componente Thor: + + thor: + env: + - name: SKIP_PYTHON_CLEANUP + value: true + + + + + Plano de Construção de Index + + Defina o valor indexBuildPlane como uma opção + de chart helm para permitir que os arquivos de índice sejam escritos por + padrão em um plano de dados diferente. Ao contrário de arquivos planos, + arquivos de índices têm requisitos diferentes. Os arquivos de índice se + beneficiam de armazenamento de acesso aleatório rápido. Normalmente, + arquivos planos e arquivos de índice são resultantes para os planos de + dados padrão definidos. Usando esta opção, você pode definir que os + arquivos de índice são construídos em um plano de dados separado de + outros arquivos comuns. Este valor de chart pode ser fornecido em um + nível de componente ou global. - Para adicionar valores de ambiente, você pode inseri-los em seu - arquivo YAML de configuração de personalização ao implantar seu HPCC - Systems em contêineres. + Por exemplo, adicionando o valor a um nível global sob + global.storage: + + global: + storage: + indexBuildPlane: myindexplane + + Opcionalmente, você pode adicioná-lo ao nível do componente, da + seguinte forma: + + thor: +- name: thor + prefix: thor + numWorkers: 2 + maxJobs: 4 + maxGraphs: 2 + indexBuildPlane: myindexplane + + Quando este valor é definido no nível do componente, ele sobrepõe + o valor definido no nível global. + + + + + Pods e Nós + + Uma das principais características do Kubernetes é sua capacidade de + agendar pods nos nós do cluster. Um pod é a menor e mais simples unidade + no ambiente do Kubernetes que você pode criar ou implantar. Um nó é uma + máquina "trabalhadora" física ou virtual no Kubernetes. + + A tarefa de agendar pods para nós específicos do cluster é + gerenciada pelo kube-scheduler. O comportamento padrão desse componente é + filtrar os nós com base nas solicitações de recursos e limites de cada + contêiner no pod criado. Nós viáveis são então pontuados para encontrar o + melhor candidato para o posicionamento do pod. O agendador também leva em + conta outros fatores como afinidade e anti-afinidade de pods, taints e + tolerations, restrições de distribuição de topologia de pod e os rótulos + do seletor de nó. O agendador pode ser configurado para usar esses + algoritmos e políticas diferentes para otimizar o posicionamento do pod de + acordo com as necessidades do seu cluster. + + Você pode implantar esses valores usando o arquivo values.yaml ou + pode colocá-los em um arquivo e fazer com que o Kubernetes leia os valores + do arquivo fornecido. Consulte a seção acima Técnicas de + Personalização para obter mais informações sobre como + personalizar sua implantação. + + + Placements + + O termo "Placements" é usado pelo HPCC Systems, ao qual o + Kubernetes se refere como scheduler ou agendamento/distribuição. Para + evitar confusão com os termos específicos do scheduler da HPCC Systems e + ECL, referenciaremos o agendamento do Kubernetes como colocações. As + colocações são um valor na configuração do HPCC Systems que está em um + nível acima dos itens, como o nodeSelector, Toleration, Affinity e + Anti-Affinity e TopologySpreadConstraints. + + O placements é responsável por encontrar o melhor nó para um pod. + Na maioria das vezes, o agendamento é realizado automaticamente pelo + Kubernetes. Você pode restringir um Pod para que ele possa funcionar + apenas em um conjunto específico de Nós. + + Os placements, então, seriam usados para garantir que pods ou jobs + que desejam nós com características específicas sejam colocados nesses + nós. + + Por exemplo, um cluster Thor poderia ser direcionado para machine + learning usando nós com GPU. Outro job pode querer nós com boa + quantidade de memória ou outro para mais CPU. + + Usando placements, você pode configurar o agendador do Kubernetes + para usar uma lista de "pods" para aplicar as configurações aos + pods. + + Por exemplo: + + placements: + - pods: [list] + placement: + <supported configurations> + + + Escopo do Placement + + Use padrões de pods para aplicar o escopo para os + placements. + + Os pods: [list] podem conter o seguinte: + + + + + + + + + + Type: <component> + + Cobre todos os pods/trabalhos sob este tipo de + componente. Isso é comumente utilizado para os componentes do + HPCC Systems. Por exemplo, o type:thor + que se aplicará a qualquer componente do tipo Thor; + thoragent, thormanager, thoragent e thorworker, etc. + + + + Target: <name> + + O campo "name" de cada componente, uso típico para + componentes do HPCC Systems refere-se ao nome do cluster. Por + exemplo, Roxie: -name: roxie que será o + destinoalvo "Roxie" (cluster). Você também pode definir vários + alvos, cada um com um nome único, como "roxie", "roxie2", + "roxie-web", etc. + + + + Pod: <name> + + Este é o nome dos metadados de "Implantação" a partir + do nome do item de array de um tipo. Por exemplo, "eclwatch-", + "mydali-", "thor-thoragent", o uso de uma expressão regular é + preferido, pois o Kubernetes usará o nome dos metadados como + prefixo e gerará dinamicamente o nome do pod, como, + eclwatch-7f4dd4dd44cb-c0w3x. + + + + Job name: + + O nome do job é geralmente também uma expressão + regular, já que o nome do job é gerado dinamicamente. Por + exemplo, um job de compilação compile-54eB67e567e, pode usar + "compile-" ou "compile-.*" ou "^compile-.*$" + + + + All: + + Aplica para todos os componentes do HPCC Systems. O + padrão de implantação dos placements para pods é [all] + + + + + + Independentemente da ordem em que os placements aparecem na + configuração, eles serão processadas na seguinte ordem: "all", "type", + "target", e então "pod"/"job". + + + Combinações mistas + + NodeSelector, taints e tolerations, e outros valores pode ser + colocado nos mesmos pods: [list] ambos por zona e por nós no Azure + placements: +- pods: ["eclwatch","roxie-workunit","^compile-.*$","mydali"] + placement: + nodeSelector: + name: npone + + + + + + Node Selection + + In a Kubernetes container environment, there are several ways to + schedule your nodes. The recommended approaches all use label selectors + to facilitate the selection. Generally, you may not need to set such + constraints; as the scheduler usually does reasonably acceptable + placement automatically. However, with some deployments you may want + more control over specific pods. + + Kubernetes uses the following methods to choose where to schedule + pods: + + + + nodeSelector field matching against node labels + + + + Affinity and anti-affinity + + + + Taints and Tolerations + + + + nodeName field + + + + Pod topology spread constraints + + + + + Node Labels + + Kubernetes nodes have labels. Kubernetes has a standard set of + labels used for nodes in a cluster. You can also manually attach + labels which is recommended as the value of these labels is + cloud-provider specific and not guaranteed to be reliable. + + Adding labels to nodes allows you to schedule pods to nodes or + groups of nodes. You can then use this functionality to ensure that + specific pods only run on nodes with certain properties. + + + + The nodeSelector + + The nodeSelector is a field in the Pod specification that allows + you to specify a set of node labels that must be present on the target + node for the Pod to be scheduled there. It is the simplest form of + node selection constraint. It selects nodes based on the labels, but + it has some limitations. It only supports one label key and one label + value. If you wanted to match multiple labels or use more complex + expressions, you need to use node Affinity. + + Add the nodeSelector field to your pod specification and specify + the node labels you want the target node to have. You must have the + node labels defined in the job and pod. Then you need to specify each + node group the node label to use. Kubernetes only schedules the pod + onto nodes that have the labels you specify. + + The following example shows the nodeSelector placed in the pods + list. This example schedules "all" HPCC components to use the node + pool with the label group: "hpcc". + + placements: + - pods: ["all"] + placement: + nodeSelector: + group: "hpcc" + + Note: The label group:hpcc + matches the node pool label:hpcc. + + This next example shows how to configure a node pool to prevent + scheduling a Dali component onto this node pool labelled with the key + spot: via the value false. As this kind of node is not always + available and could get revoked therefore you would not want to use + the spot node pool for Dali components. This is an example for how to + configure a specific type (Dali) of HPCC Systems component not to use + a particular node pool. + + placements: + - pods: ["type:dali"] + placement: + nodeSelector: + spot: "false" + + Quando se usa nodeSelector, vários nodeSelectors podem ser + aplicados. Se chaves duplicadas forem definidas, apenas a última + prevalece. + + + + Taints e Tolerations + + Taints e Tolerations são tipos de restrições de nodes do + Kubernetes também mencionadas como afinidade de nós. Apenas uma + afinidade pode ser aplicada em um pod. Se um pod combinar com várias + listas de 'pods' de placements, então apenas a última definição de + afinidade será aplicada. + + Taints e tolerations trabalham juntos para garantir que os pods + não sejam agendados em nós inadequados. Tolerations são aplicadas aos + pods e permitem (mas não exigem) que os pods sejam agendados em nós + com taints correspondentes. Taints são o oposto - eles permitem que um + nó repila um conjunto de pods. Uma maneira de implantar usando taints, + é configurar para repelir todos, exceto um nó específico. Então, esse + pod pode ser agendado em outro nó que é tolerante. + + Por exemplo, os jobs Thor devem estar todos no tipo apropriado + da VM. Se um job grande Thor vier – então o nível de taints repele + todos os pods que tentam ser agendados em um nó que não atende aos + requisitos. + + Para mais informações e exemplos de nossos Taints, Tolerations e + Placements, por favor, consulte nossa documentação de + desenvolvedor: + + https://github.com/hpcc-systems/HPCC-Platform/blob/master/helm/hpcc/docs/placements.md + + + Exemplos de Taints e Tolerations + + Os exemplos a seguir ilustram como algumas taints e + tolerations podem ser aplicadas. + + O Kubernetes pode agendar um pod em qualquer pool de nós sem + uma taint. Nos exemplos a seguir, o Kubernetes só pode agendar os + dois componentes nas pools de nós com esses lables exatos, grupo e + gpu. + + placements: + - pods: ["all"] + tolerations: + key: "group" + operator: "Equal" + value: "hpcc" + effect: "NoSchedule" + + placements: + - pods: ["type:thor"] + tolerations: + key: "gpu" + operator: "Equal" + value: "true" + effect: "NoSchedule" + + Várias tolerações também podem ser usadas. O exemplo a seguir + possui dois tolerations, grupo e GPU. + + #The settings will be applied to all thor pods/jobs and myeclccserver pod and job +- pods: ["thorworker-", "thor-thoragent", "thormanager-","thor-eclagent","hthor-"] + placement: + nodeSelector: + app: tf-gpu + tolerations: + - key: "group" + operator: "Equal" + value: "hpcc" + effect: "NoSchedule" + - key: "gpu" + operator: "Equal" + value: "true" + effect: "NoSchedule" + + + Neste exemplo, o nodeSelector está impedindo o agendador do + Kubernetes de implementar qualquer/para todos nesta pool de nodes. + Sem taints, o agendador poderia implementar em qualquer pod na pool + de nodes. Utilizando o nodeSelector, a taint forçará o pod a ser + implementado apenas nos pods que correspondem a esse rótulo de node. + Existem duas restrições então, neste exemplo uma da pool de nós e a + outra do pod. + + + + + Restrições de Espalhamento de Topologia + + Você pode usar as restrições de distribuição de topologia para + controlar como os pods são distribuídos pelo seu cluster entre + domínios de falha, como regiões, zonas, nós e outros domínios de + topologia definidos pelo usuário. Isso pode ajudar a alcançar alta + disponibilidade, bem como a utilização eficiente dos recursos. Você + pode definir restrições ao nível do cluster como padrão, ou configurar + restrições de espalhamento de topologia para cargas de trabalho + individuais. As Restrições de Espalhamento de Topologia topologySpreadConstraints requer Kubernetes + v1.19+.ou maior. + + Para mais informações veja: + + https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ + and + + https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/ + + Usando o exemplo de "topologySpreadConstraints", existem dois + agrupamentos de nós que têm "hpcc=nodepool1" e "hpcc=nodepool2" + respectivamente. Os pods Roxie serão agendados uniformemente nos dois + agrupamentos de nós. + + Após a implementação, você pode verificar emitindo o seguinte + comando: + + kubectl get pod -o wide | grep roxie + + O código substituto: + + - pods: ["type:roxie"] + placement: + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: hpcc + whenUnsatisfiable: ScheduleAnyway + labelSelector: + matchLabels: + roxie-cluster: "roxie" + + + + Afinidade (Affinity) e Anti-Afinidade (Anti-Affinity)` + + A afinidade e a anti-afinidade expandem os tipos de restrições + que você pode definir. As regras de afinidade e anti-afinidade ainda + são baseadas nas labels. Além das labels, eles fornecem regras que + orientam o agendador do Kubernetes aonde colocar os pods com base em + critérios específicos. A linguagem de afinidade/anti-afinidade é mais + expressiva do que labels simples e oferece mais controle sobre a + lógica de seleção. + + Há dois tipos principais de afinidade. Afinidade de Nó (Node + Affinity) e Afinidade de Pod (Pod Affinity). + + + Node Affinity + + A afinidade de nós é semelhante ao conceito de seletor de nós, + que permite limitar em quais nós o seu pod pode ser agendado, com + base nas labels desses nós. Estes são usados para limitar os nós que + podem receber um pod, correspondendo às labels desses nós. A + afinidade de nós e a anti-afinidade de nós só podem ser usadas para + estabelecer afinidades positivas que atraem os pods para o nó. Isto + é realizado ao limitar os nós que podem receber um pod, + correspondendo às labels desses nós. A afinidade de nós e a + anti-afinidade de nós só podem ser usadas para estabelecer + afinidades positivas que atraem os pods para o nó. + + Não existe uma verificação de esquema para o conteúdo da + afinidade. Apenas uma afinidade pode ser aplicada a um pod ou job. + Se um pod/job corresponder a várias listas de pods de posição, então + apenas a última definição de afinidade será aplicada. Esta + solicitação foi feita com base no histórico de conversas + anteriores. + + Para mais informações, veja https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ + + Existe dois tipos de afinidades de nó: + + requiredDuringSchedulingIgnoredDuringExecution: + O scheduler não consegue marcar o pod a menos que esta regra seja + cumprida. Esta função é semelhante ao nodeSelector, mas com uma + sintaxe mais expressiva. + + preferredDuringSchedulingIgnoredDuringExecution: + O scheduler tenta encontrar um nó que cumpra a regra. Se um nó + correspondente não estiver disponível, o scheduler ainda agenda o + pod. + + Você pode especificar as afiidades do nós usando o campo + .spec.affinity.nodeAffinity na especificação no + seu pod. + + + + Pod Affinity + + O pod Affinity ou Inter-Pod Affinity é usada para limitar os + nós que podem receber um pod, de acordo com as labels dos pods já em + execução nesses nós. A afinidade de pod e a anti-afinidade de pod + podem ser tanto uma afinidade atraente quanto uma repulsa à + afinidade. + + A Inter-Pod Affinity funciona de maneira muito semelhante à + afinidade de nó, mas com algumas diferenças importantes. Os modos + "hard" e "soft" são indicados usando os mesmos campos + requiredDuringSchedulingIgnoredDuringExecution + e + preferredDuringSchedulingIgnoredDuringExecution. + No entanto, estes deveriam estar aninhados sob os campos + spec.affinity.podAffinity ou + spec.affinity.podAntiAffinity dependendo de se + você deseja aumentar ou diminuir a afinidade do Pod. + + + + Exemplo Affinity + + O código a seguir ilustra o exemplo de affinity: + + - pods: ["thorworker-.*"] + placement: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/e2e-az-name + operator: In + values: + - e2e-az1 + - e2e-az2 + + Na seção 'schedulerName' a seguir, as configurações de + 'afinnity' também podem ser incluídas com este exemplo. + + Nota: O valor "affinity" no + campo "schedulerName" é suportado apenas nas versões beta do + Kubernetes 1.20.0 e posteriores. + + + + + schedulerName + + O campo schedulerName + especifica o nome do agendador responsável por agendar um pod ou uma + job. No Kubernetes, você pode configurar vários agendadores com + diferentes nomes e perfis para rodar simultaneamente no + cluster. + + Apenas um "schedulerName" pode ser aplicado a qualquer + pod/job. + + Um exemplo de schedulerName: + + - pods: ["target:roxie"] + placement: + schedulerName: "my-scheduler" +#The settings will be applied to all thor pods/jobs and myeclccserver pod and job +- pods: ["target:myeclccserver", "type:thor"] + placement: + nodeSelector: + app: "tf-gpu" + tolerations: + - key: "gpu" + operator: "Equal" + value: "true" + effect: "NoSchedule" + @@ -1358,4 +2003,4 @@ global: especificado. - + \ No newline at end of file diff --git a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ContainerLogging.xml b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ContainerLogging.xml index 1491815ceda..3fabee378c6 100644 --- a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ContainerLogging.xml +++ b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/ContainerLogging.xml @@ -2,31 +2,31 @@ - Logging em contêiner + Registro em Contêiner - Histórico de Logging + Contexto de Registro - Os logs de componentes do Bare-metal HPCC Systems são gravados em + Os logs de componentes do HPCC Systems Bare-metal são escritos em arquivos persistentes no sistema de arquivos local. Em contraste, os logs - HPCC em contêiner são efêmeros e sua localização nem sempre é bem - definida. Os componentes do HPCC Systems fornecem logs informativos no - nível do aplicativo para fins de depuração de problemas, ações de - auditoria e monitoramento do progresso. - - Seguindo as metodologias em contêiner mais amplamente aceitas, as - informações de log de componentes do HPCC Systems são roteadas para os - fluxos de saída padrão em vez de arquivos locais. Em implantações em - contêiner, não há logs de componentes gravados em arquivos como nas - edições anteriores. - - Esses logs são gravados no fluxo de erro padrão (stderr). No nível - do nó, o conteúdo do erro padrão e dos fluxos de saída são redirecionados - para um local de destino por um mecanismo de contêiner. Em um ambiente - Kubernetes, o mecanismo de contêiner do Docker redireciona os fluxos para - um driver de log, que o Kubernetes configura para gravar em um arquivo no - formato JSON. Os logs são expostos pelo Kubernetes por meio do comando - "logs" apropriadamente chamado. + do HPCC containerizados são efêmeros, e sua localização nem sempre é bem + definida. Os componentes do HPCC Systems fornecem logs de aplicação + informativos para o propósito de depuração de problemas, auditoria de + ações e monitoramento de progresso. + + Seguindo as metodologias containerizadas mais amplamente aceitas, as + informações de log dos componentes do HPCC Systems são direcionadas para + os fluxos de saída padrão, em vez de arquivos locais. Em implantações + containerizadas, não existem logs de componentes escritos em arquivos como + nas edições anteriores. + + Esses registros são escritos no fluxo de erro padrão (stderr). No + nível do nó, os conteúdos dos fluxos de erro padrão e saída são + redirecionados para um local alvo por um mecanismo de contêiner. Em um + ambiente Kubernetes, o mecanismo de contêiner Docker redireciona os fluxos + para um driver de log, que o Kubernetes configura para escrever em um + arquivo no formato JSON. Os registros são expostos pelo Kubernetes por + meio do comando apropriadamente chamado "logs" Por exemplo: @@ -35,131 +35,153 @@ >0000CF10 PRG INF 2020-05-12 17:10:34.911 1 10690 "GET /, from 10.240.0.4" >0000CF11 PRG INF 2020-05-12 17:10:34.911 1 10690 “TxSummary[activeReqs=22; rcv=5ms;total=6ms;]" - É importante entender que esses logs são de natureza efêmera e podem - ser perdidos se o pod for despejado, o contêiner travar, o nó morrer etc. - Além disso, devido à natureza das soluções em contêiner, os logs - relacionados provavelmente se originam de vários locais e pode precisar - ser coletado e processado. É altamente recomendável desenvolver uma + É importante entender que esses registros são efêmeros por natureza, + e podem ser perdidos se o pod for despejado, o contêiner travar, o nó + morrer, etc. Devido à natureza dos sistemas containerizados, é provável + que os registros relacionados se originem de vários locais e precisem ser + coletados e processados. É altamente recomendável desenvolver uma estratégia de retenção e processamento com base em suas necessidades. Muitas ferramentas estão disponíveis para ajudar a criar uma solução - apropriada com base em uma abordagem do tipo "faça você mesmo" ou em - recursos gerenciados disponíveis em provedores de nuvem. + apropriada com base em uma abordagem "faça você mesmo", ou recursos + gerenciados disponíveis de provedores de nuvem. Para os ambientes mais simples, pode ser aceitável confiar no processo padrão do Kubernetes que encaminha todo o conteúdo de - stdout/stderr para o arquivo. No entanto, à medida que a complexidade do - cluster aumenta ou a importância de reter o conteúdo dos logs aumenta, uma - arquitetura de log em nível de cluster deve ser empregada. - - O registro em nível de cluster para o cluster do HPCC Systems em - contêiner pode ser realizado incluindo um agente de registro em cada nó. A - tarefa de cada agente é expor os logs ou enviá-los por push para um - back-end de processamento de log. Os agentes de registro geralmente não - são fornecidos prontos para uso, mas há vários disponíveis, como o - Elasticsearch e o Stackdriver Logging. Vários provedores de nuvem oferecem - soluções integradas que coletam automaticamente todos os fluxos stdout/err - e fornecem armazenamento dinâmico e ferramentas analíticas poderosas, além + stdout/stderr para o arquivo. No entanto, conforme a complexidade do + cluster cresce ou a importância de reter o conteúdo dos registros cresce, + uma arquitetura de log de nível de cluster deve ser empregada. + + O registro de nível de cluster para o cluster do HPCC Systems em + contêiner pode ser realizado incluindo um agente de log em cada nó. A + tarefa de cada agente é expor os registros ou empurrá-los para um back-end + de processamento de registro. Os agentes de registro geralmente não são + fornecidos prontos, mas há vários disponíveis, como Elasticsearch e + Stackdriver Logging. Vários provedores de nuvem oferecem soluções + integradas que colhem automaticamente todos os fluxos stdout/err e + fornecem armazenamento dinâmico e ferramentas analíticas poderosas, além da capacidade de criar alertas personalizados com base em dados de log. É sua responsabilidade determinar a solução apropriada para - processar os dados de log de streaming. - - - - Soluções de Processamento de Log - - Existem várias soluções de processamento de log disponíveis. Você - pode optar por integrar os dados de registro do HPCC Systems com qualquer - uma de suas soluções de registro existentes ou implementar outra - especificamente para os dados do HPCC Systems. A partir do HPCC Systems - versão 8.4, fornecemos uma solução de processamento de log leve e completa - para sua conveniência. Como afirmado existem várias soluções possíveis, - você deve escolher a opção que melhor atende às suas necessidades. As - seções a seguir examinarão duas soluções possíveis. - - - O chart Elastic4hpcclogs - - O HPCC Systems fornece um chart Helm gerenciado, - elastic4hpcclogs, que utiliza os charts Elastic - Stack Helm para Elastic Search, Filebeats e Kibana. Este gráfico - descreve uma instância local e mínima do Elastic Stack para - processamento de log de componentes do HPCC Systems. Depois de - implantados com êxito, os logs de componentes do HPCC produzidos no - mesmo namespace devem ser indexados automaticamente no ponto de - extremidade do Elastic Search. Os usuários podem consultar esses logs - emitindo consultas de API RESTful do Elastic Search ou por meio da - interface do usuário do Kibana (depois de criar um padrão de índice - simples). - - Pronto para uso, o Filebeat encaminha as entradas de log do - componente HPCC para um índice com nome genérico: 'hpcc-logs' - - <DATE_STAMP> e grava os dados de log em campos prefixados - 'hpcc.log.*'. Ele também agrega k8s, Docker e metadados do sistema para - ajudar o usuário a consultar as entradas de log de seu interesse. - - Um padrão de índice do Kibana é criado automaticamente com base no - layout de índice de batida de arquivo padrão. + processar os dados do log de streaming. + + + Soluções de Processamento de logs + + Existem várias soluções de processamento de logs disponíveis. Você + poderia optar por integrar os dados de log do HPCC Systems com quaisquer + soluções de log existentes, ou implementar outra especificamente para os + dados do HPCC Systems. A partir da versão 8.4 do HPCC Systems, + fornecemos uma solução de processamento de logs leve, mas completa, para + sua conveniência. As próximas seções irão analisar algumas das possíveis + soluções. - - Instalando o chart elastic4hpcclogs + + Solução Gerenciada Elastic Stack + + O HPCC Systems fornece um chart Helm gerenciado, + elastic4hpcclogs, que utiliza os chart Helm da + Elastic Stack para Elastic Search, Filebeats e Kibana. Este chart descreve + uma instância local mínima da Elastic Stack para processamento de log de + componentes do HPCC Systems. Uma vez implantado com sucesso, os logs de + componentes do HPCC produzidos no mesmo namespace devem ser + automaticamente indexados no ponto de extremidade do Elastic Search. Os + usuários podem consultar esses logs emitindo consultas da API RESTful do + Elastic Search, ou via interface de usuário do Kibana (após a criação de + um padrão de índice simples). + + Pronto para usar, o Filebeat encaminha as entradas de log do + componente HPCC para um índice de nome genérico: 'hpcc-logs'- + <DATE_STAMP> e escreve os dados do log em campos prefixados com + 'hpcc.log.*'. Ele também agrega metadados k8s, Docker e do sistema para + ajudar o usuário a consultar as entradas de log de seu interesse. + + Um padrão de índice Kibana é criado automaticamente com base no + layout de índice filebeat padrão. + + + Instalando o chart elastic4hpcclogs + + Instalar a solução simples fornecida é, como o nome indica, + simples e uma maneira conveniente de reunir e filtrar dados de log. Ela + é instalada através de nossos charts helm do repositório HPCC Systems. + No diretório HPCC-platform/helm, o gráfico + elastic4hpcclogs é entregue junto com os outros + componentes da plataforma HPCC Systems. As próximas seções mostrarão + como instalar e configurar a solução de log da Elastic Stack para o HPCC + Systems. + + + + + + + + + + + + - Instalar a solução simples fornecida é, como o nome indica, simples - e uma maneira conveniente de coletar e filtrar dados de log. Ele é - instalado por meio de nossos gráficos de leme do repositório HPCC Systems. - No diretório HPCC-platform/helm, o gráfico elastic4hpcclogs é fornecido - junto com os outros componentes da plataforma HPCC Systems. As próximas - seções mostrarão como instalar e configurar a solução Elastic stack - logging para HPCC Systems. + NOTA: O chart + elastic4hpcclogs não habilita nenhuma + segurança. A responsabilidade de determinar a necessidade de + segurança e habilitar a segurança em qualquer instância do + Elastic Stack implantada ou componentes é de sua + responsabilidade e de sua organização. + + + + - - Adicionar o Repositório HPCC Systems + + Adicionando o Repositório HPCC Systems - O chart Elastic for HPCC Systems entregue pode ser encontrado no - repositório HPCC Systems Helm. Para buscar e implantar os gráficos - gerenciados do HPCC Systems, adicione o repositório do HPCC Systems - Helm, caso ainda não tenha feito isso: + O chart Elastic para HPCC Systems fornecido pode ser encontrado + no repositório Helm do HPCC Systems. Para buscar e implantar os + gráficos gerenciados pelo HPCC Systems, adicione o repositório Helm do + HPCC Systems, se ainda não o fez: - helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ - Depois que esse comando for concluído com êxito, o chart - elastic4hpcclogs estará acessível. + Uma vez que este comando tenha sido concluído com sucesso, o + chart elastic4hpcclogs estará acessível. - Confirme se o chart apropriado foi puxado para baixo. + Confirme se o chart apropriado foi descarregado. - helm list + helm list - A emissão do comando helm list exibirá os gráficos e repositórios - do HPCC Systems disponíveis. O gráfico - elastic4hpcclogs está entre eles. + A emissão do comando helm list exibirá os charts e repositórios + do HPCC Systems disponíveis. O chart elastic4hpcclogs está entre + eles. - - + + - - Instalar o chart elastic4hpcc + + Instalando o chart elastic4hpcc - Instalar o chart elastic4hpcclogs utilizando - o seguinte comando: + Instale o chart elastic4hpcclogs utilizando + o seguinte comando: - helm install <Instance_Name> hpcc/elastic4hpcclogs + helm install <Instance_Name> hpcc/elastic4hpcclogs - Forneça o nome que você deseja chamar sua instância do Elastic - Search para o parâmetro <Instance_Name>. Por exemplo, você poderia - chamar sua instância de "myelk" e, nesse caso, emitiria o comando de - instalação da seguinte maneira: + Forneça o nome que você deseja chamar sua instância do Elastic + Search para o parâmetro <Instance_Name>. Por exemplo, você + poderia chamar sua instância de "myelk", caso em que você emitiria o + comando de instalação da seguinte forma: - helm install myelk hpcc/elastic4hpcclogs + helm install myelk hpcc/elastic4hpcclogs - Após a conclusão bem-sucedida, a seguinte mensagem é - exibida: + Após a execução com sucesso, a seguinte mensagem é + exibida: - Thank you for installing elastic4hpcclogs. + Thank you for installing elastic4hpcclogs. A lightweight Elastic Search instance for HPCC component log processing. This deployment varies slightly from defaults set by Elastic, please review the effective values. @@ -168,158 +190,281 @@ PLEASE NOTE: Elastic Search declares PVC(s) which might require explicit manual when no longer needed. - - - - - - - - - - - - - IMPORTANTE: O Elastic - Search declara PVC(s) que podem exigir remoção manual - explícita quando não forem mais necessários. Isso pode ser - particularmente importante para alguns provedores de nuvem que - podem acumular custos mesmo depois de não usar mais sua - instância. Você deve garantir que nenhum componente (como - PVCs) persista e continue acumulando custos. - - - - - - OBSERVAÇÃO: dependendo da versão do Kubernetes, os usuários podem - ser avisados sobre APIs obsoletas nos gráficos elásticos (ClusterRole e - ClusterRoleBinding estão obsoletos na v1.17+). As implantações baseadas - em Kubernetes < v1.22 não devem ser afetadas. - + + + + + + + + + + + + + IMPORTANTE: OBSERVE: + O Elastic Search declara PVC(s) que podem exigir remoção + manual explícita quando não forem mais necessários. Isso + pode ser particularmente importante para alguns provedores + de nuvem que podem continuar a acumular custos mesmo após + não usar mais a sua instância. Você deve garantir que nenhum + componente (como PVCs) persista e continue a acumular + custos. + + + + + + NOTA: Dependendo da versão do Kubernetes, os usuários podem ser + alertados sobre APIs obsoletas nos charts Elastic (ClusterRole e + ClusterRoleBinding estão obsoletos na v1.17+). Implementações baseadas + em Kubernetes < v1.22 não devem ser impactadas. + - - Confirmar se seus Pods estão Prontos + + Confirme se os Pods estão Prontos - Confirme se os pods estão prontos. Ás vezes, após instalação, os - pods podem levar alguns segundos para aparecerem. Confirme se os pods - estão prontos antes de proceder. Para fazer isso, use o seguinte - comando: + Confirme que os pods Elastic estão prontos. Às vezes, após a + instalação, os pods podem demorar alguns segundos para iniciar. + Confirmar que os pods estão em um estado de prontidão é uma boa ideia + antes de prosseguir. Para fazer isso, use o seguinte comando: - kubectl get pods + kubectl get pods - Este comando retorna a seguinte informação, exibindo o status dos - pods. + Este comando retorna as seguintes informações, exibindo os + status dos pods. - elasticsearch-master-0 1/1 Running 0 + elasticsearch-master-0 1/1 Running 0 myelk-filebeat-6wd2g 1/1 Running 0 myelk-kibana-68688b4d4d-d489b 1/1 Running 0 - + - Quando todos os pods estiverem indicando um estado 'ready' e - 'Running', incluindo os três componentes para filebeats, Elastic Search - e Kibana (destacado acima), você poderá prosseguir. - + Uma vez que todos os pods estejam indicando um estado 'ready' e + 'Running', incluindo os três componentes para filebeats, Elastic + Search e Kibana (destacados acima), você pode prosseguir. + - - Confirmar os Serviços Elastic + + Confirmando os serviços Elastic - Para garantir que os serviços Elastic estejam em execução, entre - com o seguinte comando: + Para confirmar se os serviços Elastic estão em execução, utilize + o seguinte comando: - $ kubectl get svc + $ kubectl get svc - Isso exibe as seguintes informações de confirmação: + Isto exibe a seguinte confirmação: - ... + ... elasticsearch-master ClusterIP 10.109.50.54 <none> 9200/TCP,9300/TCP 68m elasticsearch-master-headless ClusterIP None <none> 9200/TCP,9300/TCP 68m myelk-kibana LoadBalancer 10.110.129.199 localhost 5601:31465/TCP 68m ... - Nota: O serviço myelk-kibana é declarado como LoadBalancer por - conveniência. - + Nota: O serviço myelk-kibana é delcarado como LoadBalancer para + conveniência. + - - Configurando Componentes do Elastic Stack + + Configurando os componentes do Elastic Stack - Você pode precisar ou querer personalizar os componentes do - Elastic Stack. Os valores dos charts do componentes Elastic podem ser - substituídos como parte do comando de implantação do HPCC - Systems. + Você pode precisar ou querer personalizar os componentes da + Elastic Stack. Os valores dos charts dos componentes Elastic podem ser + substituídos como parte do comando de implantação do HPCC + Systems. - Por exemplo: + Por exemplo: - helm install myelk hpcc/elastic4hpcclogs --set elasticsearch.replicas=2 + helm install myelk hpcc/elastic4hpcclogs --set elasticsearch.replicas=2 - Consulte o repositório GitHub do Elastic Stack para obter a lista - completa de todas as opções do Filebeat, Elastic Search, LogStash e - Kibana com descrições. - + Por favor, consulte o repositório GitHub do Elastic Stack para a + lista completa de todas as opções do Filebeat, Elastic Search, + LogStash e Kibana com descrições. + + + + Utilizar os componentes de logs do HPCC Systems no + Kibana + + Uma vez habilitado e em execução, você pode explorar e consultar + os logs de componentes do HPCC Systems a partir da interface de + usuário do Kibana. Os padrões de índice do Kibana são necessários para + explorar dados do Elastic Search a partir da interface de usuário do + Kibana. Para mais informações sobre como usar a interface + Elastic-Kibana, por favor, consulte a documentação + correspondente: - - Use of HPCC Systems Component Logs in Kibana - - Uma vez ativado e em execução, você pode explorar e consultar os - logs de componentes do HPCC Systems na interface do usuário do Kibana. O - uso da interface do Kibana é bem suportado e documentado. Os padrões de - índice do Kibana são necessários para explorar os dados do Elastic - Search na interface do usuário do Kibana. A Elastic fornece explicações - detalhadas das informações necessárias para entender e utilizar - efetivamente a interface Elastic-Kibana. A documentação robusta do - Kibana deve ser consultada para obter mais informações sobre como usar a - interface do Kibana. Por favor, veja: https://www.elastic.co/ - e + https://www.elastic.co/ + + + e + https://www.elastic.co/elastic-stack/ - Incluídos na documentação completa também estão vídeos de início - rápido e outros recursos úteis. + https://www.elastic.co/elastic-stack/ + + + + + Configurando o logAccess para Elasticstack + + O recurso logAccess permite que o HPCC + Systems consulte e empacote logs relevantes para vários recursos, como + o relatório ZAP, logs de assistente de WorkUnit, visualizador de logs + ECLWatch, etc. + + Uma vez que os logs são migrados ou direcionados para a + instância de pilha elástica. A plataforma HPCC Systems precisa ser + capaz de acessar esses logs. A forma como você direciona o HPCC + Systems para fazer isso é fornecendo um arquivo de valores que inclui + os mapeamentos de logs. Fornecemos um arquivo de valores padrão e + fornecemos um exemplo de linha de comando que insere esse arquivo de + valores em seu deployment. Esse arquivo de valores de configuração + sugeridos para habilitar o acesso ao log pode ser encontrado no + repositório GitHub da plataforma HPCC Systems. + + https://github.com/hpcc-systems/HPCC-Platform + + Em seguida, navegue até o arquivo + helm/examples/azure/log-analytics/loganalytics-hpcc-logaccess.yaml. + + Você pode usar o gráfico Elastic4HPCCLogs fornecido ou pode + adicionar os valores lá ao seu arquivo yaml de valores de configuração + personalizada. + + Você pode então instalá-lo usando um comando, como o: + + helm install mycluster hpcc/hpcc -f elastic4hpcclogs-hpcc-logaccess.yaml + - - Azure AKS Insights + + Solução de Análise de Logs do Azure - O Azure AKS Insights é um recurso opcional projetado para ajudar a - monitorar o desempenho e a integridade de clusters baseados em Kubernetes. - Uma vez habilitado e associado um determinado AKS a um cluster do HPCC - Systems ativo, os logs do componente HPCC são capturados automaticamente - pelo Insights. Todos os dados STDERR/STDOUT são capturados e + Os Serviços Kubernetes do Azure (AKS) e a Análise de Logs do Azure + (ALA) são um recurso opcional projetado para ajudar a monitorar o + desempenho e a saúde dos clusters baseados em Kubernetes. Uma vez + habilitado e associado a um determinado AKS com um cluster do HPCC + Systems, os logs de componentes do HPCC são automaticamente capturados + pela Análise de Logs. Todos os dados STDERR/STDOUT são capturados e disponibilizados para fins de monitoramento e/ou consulta. Como geralmente - acontece com os recursos do provedor de nuvem, o custo é uma consideração - importante e deve ser bem entendido antes da implementação. O conteúdo do - log é gravado no armazenamento de logs associado ao seu espaço de trabalho - do Log Analytics. + ocorre com os recursos dos provedores de nuvem, o custo é uma consideração + significativa e deve ser bem compreendido antes da implementação. O + conteúdo do log é escrito na loja de logs associada à sua área de trabalho + de Análise de Logs. - Habilitar Azure Insights + Habilitando Azure Log Analytics + + Habilite o Azure Log Analytics (ALA) no cluster AKS alvo usando + uma das seguintes opções: Linha de comando direta, Linha de comando + scriptada, ou pelo portal Azure. - A habilitação do Azure's Insights no cluster AKS de destino pode - ser feita no portal do Azure ou via CLI. Para obter documentação - detalhada do Azure: Habilite insights de contêiner: Enabling Azure's - Insights on the target AKS cluster can be done from the Azure portal or - via CLI. For detailed Azure documentation: Enable Container - insights: + Para obter informações mais detalhadas, consulte a documentação do + Azure: https://docs.microsoft.com/en-us/azure/azure-monitor/containers/container-insights-onboard + + Linha de comando + + Para habilitar os insights do Azure Log Analytics a partir da + linha de comando: + + Você pode criar manualmente um workspace dedicado à análise de + logs, ou pode pular esta etapa e utilizar o workspace padrão. + + Para criar um workspace dedicado insira este comando: + + az monitor log-analytics workspace create -g myresourcegroup -n myworkspace --query-access Enabled + + Para habilitar o recurso de Análise de Logs em um cluster AKS de + destino, faça referência ao id do recurso do workspace criado na etapa + anterior: + + az aks enable-addons -g myresourcegroup -n myaks -a monitoring --workspace-resource-id \ + "/subscriptions/xyz/resourcegroups/myresourcegroup/providers/ \ + microsoft.operationalinsights/workspaces/myworkspace" + + + + Linha de Comando Scriptada + + Para conveniência, o HPCC Systems oferece um script para + habilitar o ALA (com um workspace dedicado à análise de logs) no + cluster AKS alvo. + + O script enable-loganalytics.sh está localizado em: + + https://github.com/hpcc-systems/HPCC-Platform/tree/master/helm/examples/azure/log-analytics + + O script requer o preenchimento dos seguintes valores no arquivo + de ambiente env-loganalytics. + + Fornecer esses valores na ordem do arquivo de ambiente + env-loganalytics para criar um novo workspace no + Azure Log Analytics, associá-lo a um cluster AKS de destino, e + habilitar o processamento de logs: + + + + LOGANALYTICS_WORKSPACE_NAME + O nome desejado para o workspace do Azure Log Analytics a ser + associada ao cluster AKS de destino. Um novo workspace é criado se + esse valor não existir. + + + + LOGANALYTICS_RESOURCE_GROUP + O grupo de recursos do Azure associado ao cluster AKS de + destino. + + + + AKS_CLUSTER_NAME O nome do + cluster AKS de destino para associar a análise de logs. + + + + TAGS As tags associadas com + o novo workspace. + + Por exemplo: "admin=MyName email=my.email@mycompany.com + environment=myenv justification=testing" + + + + AZURE_SUBSCRIPTION + [Opcional] Garante que esta assinatura esteja configurada antes de + criar o novo workspace + + + + Uma vez que esses valores estejam preenchidos, o script + enable-loganalyics.sh pode ser executado e ele irá criar o workspace + de análise de logs e associá-la ao cluster AKS de destino. + + Portal Azure - Para habilitar o insights do Azure no portal: + Para habilitar Azure Log Analytics no portal Azure: - Selecione cluster AKS de Destino + Select Target AKS cluster @@ -331,44 +476,124 @@ myelk-kibana LoadBalancer 10.110.129.199 localhost 5601:31465/TCP 68m - Habilite - escolha ao workspace padrão + Enable - escolha default workspace + - - Linha de Comando + + Configure o logAccess do HPCC para Azure - Para habilitar os Azure insights na linha de comando: + O recurso logAccess permite que o HPCC + Systems consulte e empacote logs relevantes para várias funcionalidades, + como o relatório ZAP, logs auxiliares da WorkUnit, visualizador de log + do ECLWatch, etc. - Opcionalmente, crie o espaço de trabalho de análise de log - [espaço de trabalho padrão, caso contrário] + + Obtenha o Service Principal - Entre: + Para conceder acesso à API Log Analytics, o Azure requer uma + aplicação registrada no Azure Active Directory (AAD). Obtenha uma + aplicação registrada no AAD. - az monitor log-analytics workspace create -g myresourcegroup -n myworkspace --query-access Enabled + Para mais informações sobre o registro de um Azure Active + Directory, veja a documentação oficial do Azure: - Habilitar no cluster AKS de destino (referência ao ID do recurso - do workspace da etapa anterior) + https://docs.microsoft.com/en-us/power-apps/developer/data-platform/walkthrough-register-app-azure-active-directory - az aks enable-addons -g myresourcegroup -n myaks -a monitoring --workspace-resource-id \ - "/subscriptions/xyz/resourcegroups/myresourcegroup/providers/ \ - microsoft.operationalinsights/workspaces/myworkspace" + Dependendo da estrutura de sua assinatura Azure, pode ser + necessário solicitar isso de um administrador de assinatura + + + + Forneça Informações da Aplicação Registrada no AAD + + O logAccess do HPCC Systems requer acesso ao inquilino AAD, + cliente, token e ID workspace alvo por meio de um objeto secreto + seguro. Espera-se que o segredo esteja na categoria 'esp', e nomeado + 'azure-logaccess. + + Os seguintes pares de chave-valor são suportados + + + + aad-tenant-id + + + + aad-client-id + + + + aad-client-secret + + + + ala-workspace-id + + - A interface do AKS Insights no Azure fornece visualizações de - métricas de integridade em nível de cluster/nó/contêiner centradas em - Kubernetes e links diretos para logs de contêiner por meio de - interfaces de "análise de log". Os logs podem ser consultados através - da linguagem de consulta “Kusto” (KQL). Consulte a documentação do - Azure para obter detalhes sobre como consultar os logs. + O script está disponível em + 'create-azure-logaccess-secret.sh': - Consulte a documentação do Azure para obter detalhes sobre como - consultar os logs. + https://github.com/hpcc-systems/HPCC-Platform/tree/master/helm/examples/azure/log-analytics - Exemplo de consulta KQL para buscar entradas de registro - "Transaction summary" de um contêiner ECLWatch: + O script pode ser usado para criar o segredo necessário. - let ContainerIdList = KubePodInventory + Exemplo de comando para criação manual de segredo (supondo que + ./secrets-templates contenha um arquivo nomeado exatamente como as + chaves acima): + + create-azure-logaccess-secret.sh .HPCC-Platform/helm/examples/azure/log-analytics/secrets-templates/ + + Caso contrário, crie o segredo manualmente. + + Exemplo de comando para criação manual de segredo (supondo que + ./secrets-templates contenha um arquivo nomeado exatamente como as + chaves acima): + + kubectl create secret generic azure-logaccess \ + --from-file=HPCC-Platform/helm/examples/azure/log-analytics/secrets-templates/ + + + + Configure o logAccess do HPCC + + A implantação do HPCC Systems alvo deve ser configurada para se + direcionar para a área de trabalho do Azure Log Analytics acima, + fornecendo os valores de logAccess apropriados (como + ./loganalytics-hpcc-logaccess.yaml). O secret azure-logaccess + previamente criado deve ser declarado e associado à categoria esp, + isso pode ser realizado através do valor yaml dos segredos (como + ./loganalytics-logaccess-secrets.yaml). + + Exemplo: + + helm install myhpcc hpcc/hpcc \ + -f HPCC-Platform/helm/examples/azure/log-analytics/loganalytics-hpcc-logaccess.yaml + + + + + + Acessando os Logs do HPCC Systems + + A interface AKS Log Analytics no Azure fornece visualizações de + métricas de saúde de cluster/nó/contêiner centradas em Kubernetes e + links diretos para logs de contêineres por meio de interfaces de + "análise de log". Os logs podem ser consultados via a linguagem de + consulta “Kusto” (KQL). + + Consulte a documentação do Azure para detalhes sobre como + consultar os logs. + + Exemplo de consulta KQL para buscar entradas de log de "Resumo de + transações" de um contêiner ECLWatch: + + let ContainerIdList = KubePodInventory | where ContainerName =~ 'xyz/myesp' | where ClusterId =~ '/subscriptions/xyz/resourceGroups/xyz/providers/Microsoft. ContainerService/managedClusters/aks-clusterxyz' @@ -380,111 +605,147 @@ ContainerLog | order by TimeGenerated desc | render table - Amostra de saída + Output de exemplo: - + - Consultas mais complexas podem ser formuladas para buscar - informações específicas fornecidas em qualquer uma das colunas de log, - incluindo dados não formatados na mensagem de log. A interface do - Insights facilita a criação de alertas com base nessas consultas, que - podem ser usadas para acionar e-mails, SMS, execução de Logic App e - muitas outras ações. - + Consultas mais complexas podem ser formuladas para buscar + informações específicas fornecidas em qualquer uma das colunas de log, + incluindo dados não formatados na mensagem do log. A interface de + Análise de Log facilita a criação de alertas baseados nessas consultas, + que podem ser usados para acionar e-mails, SMS, execução de Logic App, e + muitas outras ações. - Controlando a saída de registro do HPCC Systems + Controlling HPCC Systems Logging Output Os logs do HPCC Systems fornecem uma riqueza de informações que - podem ser usadas para benchmarking, auditoria, depuração, monitoramento, - etc. O tipo de informação fornecida nos logs e seu formato são controlados - trivialmente através da configuração padrão do Helm. Tenha em mente que no - modo de contêiner, cada linha de saída de log é passível de incorrer em um - custo dependendo do provedor e do plano que você possui e a verbosidade - deve ser cuidadosamente controlada usando as opções a seguir. Por padrão, - os logs de componentes não são filtrados e contêm as seguintes - colunas. - - Por padrão, os logs de componentes não são filtrados e contêm as + podem ser usadas para benchmarking, auditoria, debugging, monitoramento, + etc. O tipo de informação fornecida nos logs e seu formato é trivialmente + controlado via configuração padrão do Helm. Lembre-se que, no modo de + contêiner, cada linha de saída de log é passível de incorrer um custo, + dependendo do provedor e plano que você possui, e a verbosidade deve ser + cuidadosamente controlada usando as seguintes opções. + + Por padrão, os logs do componente não são filtrados, e contêm as seguintes colunas: MessageID TargetAudience LogEntryClass JobID DateStamp TimeStamp ProcessId ThreadID QuotedLogMessage - Os logs podem ser filtrados por TargetAudience, Category ou Detail - Level. Além disso, as colunas de saída podem ser configuradas. As - definições de configuração de registro podem ser aplicadas no nível global - ou de componente. + Os logs podem ser filtrados por Público-Alvo, Categoria ou Nível de + Detalhe. Além disso, as colunas de saída podem ser configuradas. As + configurações de logging podem ser aplicadas no nível global ou no nível + do componente. - Target Audience Filtering + Filtragem do Público-Alvo Os públicos-alvo disponíveis incluem operador (OPR), usuário - (USR), programador (PRO), auditoria (ADT) ou todos. O filtro é - controlado pelo valor <section>.logging.audiences. O valor da - string é composto por códigos de 3 letras delimitados pelo operador de - agregação (+) ou pelo operador de remoção (-). + (USR), programador (PRO), monitor (MON), auditoria (ADT), ou todos. O + filtro é controlado pelo valor <section>.logging.audiences. O + valor da string é composto por códigos de 3 letras delimitados pelo + operador de agregação (+) ou pelo operador de remoção (-). - Por exemplo, todas as saídas de log de componentes devem incluir - apenas mensagens do programador e do usuário: + Por exemplo, toda a saída do log do componente para incluir apenas + mensagens de Programador e Usuário: helm install myhpcc ./hpcc --set global.logging.audiences="PRO+USR" - Filtragem de Categoria de Destino + Filtragem da Categoria de Destino - As categorias de destino disponíveis incluem desastre (DIS), erro - (ERR), informações (INF), aviso (WRN), progresso (PRO), métricas (MET). - O filtro de categoria (ou classe) é controlado pelo valor + As categorias de destino disponíveis incluem disaster (DIS), error + (ERR), information (INF), warning (WRN), progress (PRO), event (EVT), + metrics (MET). O filtro de categoria (ou classe) é controlado pelo valor <section>.logging.classes, composto por códigos de 3 letras delimitados pelo operador de agregação (+) ou pelo operador de remoção (-). - Por exemplo, a saída do log da instância mydali para incluir todas - as classes, exceto o progresso: + Por exemplo, a saída de log da instância mydali deve incluir todas + as classes, exceto progress: helm install myhpcc ./hpcc --set dali[0].logging.classes="ALL-PRO" --set dali[0].name="mydali" - Log Detail Level Configuration + Configuração do Nível de Detalhe do Log + + A verbosidade da saída do log pode ser ajustada de "apenas + mensagens críticas" (1) até "relatar todas as mensagens" (100). O nível + de log padrão é bastante alto (80) e deve ser ajustado de acordo. + + Estes são os níveis de log disponíveis: + + + + CriticalMsgThreshold = 1; + + + + FatalMsgThreshold = 1; + + + + ErrMsgThreshold = 10; + - A verbosidade da saída do log pode ser ajustada de "critical - messages only" (1) até "report all messages" (100). O nível de log - padrão é bastante alto (80) e deve ser ajustado de acordo. + + WarnMsgThreshold = 20; + - Por exemplo, a verbosidade deve ser média para todos os - componentes: + + AudMsgThreshold = 30; + + + + ProgressMsgThreshold = 50; + + + + InfoMsgThreshold = 60; + + + + DebugMsgThreshold = 80; + + + + ExtraneousMsgThreshold = 90; + + + + Por exemplo, para exibir somente o progresso e o baixo nível (mais + critico) helm install myhpcc ./hpcc --set global.logging.detail="50" - Configuração da Coluna de Dados de Registro - - As colunas de dados de log disponíveis incluem messageid(MID), - público(AUD), class(CLS), date(DAT), time(TIM), node(NOD), - militime(MLT), microtime(MCT), nanotime(NNT) , processid(PID), - threadid(TID), job(JOB), use(USE), session(SES), code(COD), - component(COM), quotemessage(QUO), prefix(PFX), all(ALL) e padrão (STD). - A configuração das colunas (ou campos) de dados de log é controlada pelo - valor <section>.logging.fields, composto por códigos de 3 letras - delimitados pelo operador de agregação (+) ou pelo operador de remoção - (-). Por exemplo, todas as saídas de log de componentes devem incluir as - colunas padrão, exceto a coluna de ID do job: + Configuração da Coluna de Dados de Log + + As colunas de dados de log disponíveis incluem messageid (MID), + audience (AUD), class (CLS), date(DAT), time (TIM), node (NOD), + millitime (MLT), microtime (MCT), nanotime (NNT), processid (PID), + threadid (TID), job (JOB), use(USE), session(SES), code(COD), + component(COM), quotedmessage(QUO), prefix (PFX), all (ALL), e + standard(STD). A configuração das colunas (ou campos) de dados de log é + controlada pelo valor <section>.logging.fields, composto por + códigos de 3 letras delimitados pelo operador de agregação (+) ou pelo + operador de remoção (-). - Por exemplo, todas as saídas de log de componentes devem incluir - as colunas padrão, exceto a coluna de ID do job: + Por exemplo, toda a saída de log do componente deve incluir as + colunas padrão, exceto a coluna do ID do job: helm install myhpcc ./hpcc --set global.logging.fields="STD-JOB" - O ajuste de valores de registro por componente pode exigir a - afirmação de vários valores específicos de componentes, o que pode ser - inconveniente de fazer por meio do parâmetro de linha de comando --set. - Nesses casos, um arquivo de valores personalizados pode ser usado para - definir todos os campos obrigatórios. + O ajuste dos valores de log por componente pode exigir a afirmação + de vários valores específicos do componente, o que pode ser + inconveniente de fazer via o parâmetro da linha de comando --set. Nestes + casos, um arquivo de valores personalizados poderia ser usado para + definir todos os campos requeridos. Por exemplo, a instância do componente ESP 'eclwatch' deve gerar um log mínimo: @@ -493,39 +754,32 @@ ContainerLog - Asychronous logging configuration + Configuração de Logging Assíncrono Por padrão, as entradas de log serão criadas e registradas de forma assíncrona, para não bloquear o cliente que está registrando. As - entradas de log serão mantidas em uma fila e geradas em uma thread em - segundo plano. Esta fila tem um limite, uma vez atingido, o cliente - bloqueará aguardando capacidade. Como alternativa, o comportamento pode - ser configurado de forma que, quando esse limite for atingido, as - entradas de log sejam descartadas e perdidas para evitar qualquer - possível bloqueio. - - By default log entries will be created and logged asynchronously, - so as not to block the client that is logging. Log entries will be held - in a queue and output on a background thread. This queue has a maximum - depth, once hit, the client will block waiting for capacity. - Alternatively, the behaviour can be be configured such that when this - limit is hit, logging entries are dropped and lost to avoid any - potential blocking. - - NB: normalmente, espera-se que a pilha de registro continue e o - limite de fila padrão seja suficiente para evitar qualquer + entradas de log serão mantidas em uma fila e dispensadas em uma thread + em segundo plano. Essa fila tem um limite, quando atingido, o cliente + ficará bloqueado aguardando disponibilidade. Alternativamente, o + comportamento pode ser configurado para que, quando esse limite for + atingido, as entradas de log sejam descartadas e perdidas para evitar + qualquer bloqueio potencial. + + NB: normalmente, espera-se que a pilha de registro acompanhe e que + o limite de fila padrão seja suficiente para evitar qualquer bloqueio. - Os padrões podem ser configurados definindo o + Os padrões podem ser configurados definindo a <section>.logging.queueLen e/ou <section>.logging.queueDrop. - Ajustar <section>.logging.queueLen para 0 desabilitará o log - assíncrono, ou seja, cada log será bloqueado até ser concluído. + Definir <section>.logging.queueLen como 0, desativará o + registro assíncrono, ou seja, cada registro bloqueará até ser + concluído. - Ajustar <section>.logging.queueDrop para um valor não-zero - (N) fará com que N entradas de log da fila sejam descartadas se o - queueLen for atingido. + Definir <section>.logging.queueDrop para um valor diferente + de zero (N) fará com que N entradas de registro da fila sejam + descartadas se a queueLen for atingida. diff --git a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/CustomConfig.xml b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/CustomConfig.xml index e2cab9b320d..9a72a0a39e1 100644 --- a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/CustomConfig.xml +++ b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/CustomConfig.xml @@ -2,17 +2,17 @@ - Configurações Customizadas + Configurações Personalizadas Técnicas de Customização - Nesta seção, nós vamos abordar a criação de uma configuração - customizada do arquivo YAML e do lançamento de uma plataforma HPCC - Systems® utilizando os configurações padrão mas - as customizações. Depois de entender os conceitos de deste capítulo, você - pode consultar o próximo para uma referência a todos as configurações de - valores de configuração. + Esta seção percorre a criação de um arquivo de configuração YAML + personalizado e a implantação de uma plataforma HPCC Systems + ® usando a configuração padrão mais as + personalizações. Uma vez que você entenda os conceitos neste capítulo, + você pode se referir ao próximo capítulo para uma referência a todos os + ajustes de valor de configuração. Há várias maneiras de personalizar uma implantação da plataforma. Nós recomendamos o uso de métodos que permitem que você aproveite melhor o @@ -220,8 +220,8 @@ Crie um novo arquivo de texto e nomeie-o twothors.yaml, em seguida abra em um editor - de texto. + role="bold">twothors.yaml e abra-o em um editor de + texto. Você pode usar qualquer editor de texto. @@ -315,6 +315,600 @@ helm upgrade mycluster hpcc/hpcc -f tworoxies.yaml -f twothors.yaml + + + Crie um Chart de Configuração Personalizado para + AllowPipePrograms + + Você pode especificar mais de uma configuração personalizada + repetindo o parâmetro -f. + + Por exemplo: + + helm install mycluster hpcc/hpcc -f tworoxies.yaml -f thorWithPipe.yaml + + Nesta seção, modificaremos o Thor para permitir alguns Programas + PIPE. Na versão 9.2.0 e superior, os comandos usados ​​no PIPE são + restritos por padrão em implantações containerizadas a menos que sejam + explicitamente permitidos no Helm chart. + + + + Se você ainda não adicionou o repositório HPCC Systems a lista + de repositórios Helm, faça agora. + + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + + Se você ja adicionou, atualiza os últimos: + + helm repo update + + + + Crie um novo arquivo de texto e o nomeie de thorWithPipe.yaml e abra-o em um editor de + texto. + + Você pode usar qualque editor de texto. + + + + Abra o arquivo padrão de valores que você salvou previamente + (myvalues.yaml) em um editor de texto. + + + + Copie a seção thor: toda e + cole no novo arquivo thorWithPipe.yaml. + + + + Adicione um bloco no fim: + + allowedPipePrograms: + - sort + - grep + - echoEste exemplo habilita três programas. Você pode um + deles. + + + + Salve o arquivo e feche o editor de texto. + + O resultado deve do arquivo thorWithPipe.yaml deve ficar + assim + + Nota: Os comentários foram + removidos para simplificar o exemplo: + + thor: +- name: thor + prefix: thor + numWorkers: 2 + maxJobs: 4 + maxGraphs: 2 + allowedPipePrograms: + - sort + - grep + - echo + + + + Faça o deploy utilizando o novo chart de + configuração customizado. + + + + Abra uma janela de terminal e navegue até o diretório onde o + arquivo thorWithPipe.yaml foi salvo. + + + + Faça o deploy da sua plataforma HPCC Systems, adicionando o + novo arquivo de configuração por meio do comando: + + # If you have previously stopped your cluster + +helm install mycluster hpcc/hpcc -f thorWithPipe.yaml + +# To upgrade without stopping + +helm upgrade mycluster hpcc/hpcc -f thorWithPipe.yaml + + + + + Após confirmar o deploy em execução, execute um job que use + uma ação PIPE e especifica um dos programas especificado. + + Nota: Se o job for muito + simples, será executado no hThor ao inves do Thor e este exemplo não + habilita programas PIPE no hThor. + + Você pode criar um novo arquivo yaml para permitir Programas + PIPE no ECL Agent ou pode utilizar: + + #OPTION('pickBestEngine',FALSE); + + para forçar o job ser executado no Thor. + + + + + + + + Criar uma Configuração Personalizada do Chart para o Thor + + Nesta seção, criaremos um arquivo YAML para especificar uma + implementação de plataforma sem Thor. + + + + Se você ainda não adicionou o repositório HPCC Systems + repository to a lista de repositórios do helm, faça agora. + + + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + + + Caso já tenha feito, atualize os últimos charts: + + + helm repo update + + + + + Crie um novo arquivo de texto e o nomeie para nothor.yaml e abra-o em um editor de + texto. + + Você pode usar qualquer editor. + + + + Edite, conforme o exemplo a seguir, o arquivo para desabilitar + o Thor: + + + thor: [] + + + + + Salve o arquivo e feche o editor de texto. + + + + + Deploy utilizando um novo chart de configuração + customizado. + + + + + Abra o terminal e navegue até o diretório onde está salvo o + arquivo nothor.yaml. + + + + Faça o deploy do HPCC Systems, incluindo no seu comando a nova + configuração: + + + # If you have previously stopped your cluster + +helm install mycluster hpcc/hpcc -f nothor.yaml + +# To upgrade without stopping + +helm upgrade mycluster hpcc/hpcc -f nothor.yaml + + + + + Após confirmar que seu deploy está em execução, abra o ECL + Watch. + + Você não irá ver nenhum cluster Thor como destino. + + + + + + Crie um Chart de Configuração Personalizada para o Roxie + + Nesta seção, criaremos um arquivo YAML para especificar uma + implementação de plataforma sem Roxie. Embora o resultado seja + semelhante ao que fizemos na seção anterior para sem Thor, a técnica é + diferente. + + + + Se você ainda não adicionou o respositório do HPCC Systems a + lista de respositórios helm, faça agora. + + + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + + + Caso já tenha feito, atualize os últimos charts: + + + helm repo update + + + + + Crie um novo arquivo de texto e o nomeie para noroxie.yaml e abra-o em um editor de + texto. + + Você pode usar qualquer editor de texto. + + + + Salve os valores padrão em um arquivo de texto: + + + helm show values hpcc/hpcc > myvalues.yaml + + + + + Abra o arquivo salvo (myvalues.yaml) em um editor de + texto. + + + + Copie a seção roxie: e cole + no novo arquivo noroxie.yaml. + + + + Copie a seção eclagent: e + cole no novo arquivo noroxie.yaml. + + + + No bloco roxie, edite o valor + para disabled: e mude para + true. + + Você pode remover todo o resto do bloco roxie: exceto o + nome. + + + + No bloco eclagent, delete + todo o bloco name: + roxie-workunit. + + Isso remove a instância de um Roxie atuando como um Agente + ECL. + + + + Salve e feche o editor de texto. + + O arquivo noroxie.yaml deverá parecer como este: + + Nota: Os comentários foram + removidos para simplificar o exemplo: + + + roxie: +- name: roxie + disabled: true + +eclagent: +- name: hthor + replicas: 1 + maxActive: 4 + prefix: hthor + useChildProcesses: false + type: hthor + + + + + + Faça o deploy usando o novo chart de + configuração personalizada. + + + + + Abra uma janela de terminal e navegue até o diretório onde + está salvo o arquivo noroxie.yaml. + + + + Faça o deploy do HPCC Systems, incluindo no seu comando a nova + configuração: + + + helm install mycluster hpcc/hpcc -f noroxie.yaml + + + + + Após confirmar que seu deploy está em execução, abra o ECL + Watch. + + Você não irá mais ver nenhum cluster Roxie disponível como + destino. + + + + + + Crie um Chart de Configuração Personalizado para Múltiplos Thors + Ouvindo uma Fila Comum. + + Nesta seção, criaremos três Thors que escutam uma fila comum (além + de sua própria fila). Isso fornece a capacidade de definir configurações + distintas de cluster Thor, mas permite que eles formem um único alvo + atrás de uma única fila. Esses clusters podem ser vinculados a + determinados conjuntos de nós em diferentes zonas de disponibilidade, se + desejado. Você pode usar este exemplo como um ponto de partida e ajustar + o número de clusters Thor que deseja. + + Isso é alcançado definindo filas de destino auxiliares adicionais + para cada definição de Thor e usando um nome comum como uma fila + auxiliar. + + + + Se você ainda não adicionou o respositório do HPCC Systems a + lista de respositórios helm, faça agora. + + + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + + + Se já fez isso, atualize os últimos charts: + + + helm repo update + + + + + Crie um novo arquivo de texto e o nomeie para threethorsonequeue.yaml e abra-o em um editor + de texto. + + Você pode usar qualquer editor de texto. + + + + Abra o arquivo padrão de valores que você salvou previamente + (myvalues.yaml) em um editor de texto. + + + + Copie thor: e cole no novo + arquivo threethorsonequeue.yaml file. + + + + Copie todo o conteúdo do novo arquivo yaml file, exceto a + primeira linha (thor:), e cole no final do arquivo twice. + + Isso cria três seções - name:. + + + + Edite o arquivo da seguinte maneira: + + + + + De um único valor de name para cada Thor:. + + Neste exemplo, utilizaremos thor1, + thor2, e thor3. + + + + Adicione a entrada auxQueues: para cada block Thor block + utilizando um nome comum + + Neste exemplo estamos utilizando: + + + auxQueues: [ thorQ ] + + + + + Certifique-se que o prefix: é o mesmo que cada bloco do + Thor. + + + + + + + Salve e feche o editor de texto. + + O arquivo threethorsonequeue.yaml deverá ficar assim: + + Note: Os comentários foram + removidos para simplificar o exemplo: + + + thor: +- name: thor1 + auxQueues: [ thorQ ] + maxGraphs: 2 + maxJobs: 2 + numWorkers: 4 + numWorkersPerPod: 2 + prefix: thor +- name: thor2 + maxGraphs: 2 + maxJobs: 2 + numWorkers: 4 + numWorkersPerPod: 2 + prefix: thor + auxQueues: [ thorQ ] +- name: thor3 + maxGraphs: 2 + maxJobs: 2 + numWorkers: 4 + numWorkersPerPod: 2 + prefix: thor + auxQueues: [ thorQ ] + + + + + + Faça o deploy usando o novo chart de + configuração personalizada. + + + + + Abra uma janela de terminal e navegue até o diretório onde + está salvo o arquivo threethorsonequeue.yaml. + + + + Faça o deploy do HPCC Systems, incluindo no seu comando a nova + configuração: + + + # If you have previously stopped your cluster + +helm install mycluster hpcc/hpcc -f threethorsonequeue.yaml + +# To upgrade without stopping + +helm upgrade mycluster hpcc/hpcc -f threethorsonequeue.yaml + + + + + + Após confirmar que seu deploy está em execução, abra o ECL + Watch. + + Você deve ver quatro clusters Thor disponíveis como Alvos - + thor1, thor2, thor3 e uma quarta fila que todos os três Thors ouvem + - thorQ. + + + + + + Crie um Chart de Configuração Personalizado somente para Landing + Zone + + Nessa seção, nós iremos criar uma configuração personalizada que + implementa uma "plataforma" contendo apenas uma Landing Zone. Isso pode + ser útil se tudo o que você precisa é um servidor de landing zone com o + dafilesrv rodando. + + Nota: Isso só pode ser + implementado em um namespace diferente de qualquer outra instância de + plataforma. + + + + Se você ainda não adicionou o respositório do HPCC Systems a + lista de respositórios helm, faça agora. + + + helm repo add hpcc https://hpcc-systems.github.io/helm-chart/ + + + Se já fez isso, atualize os últimos charts: + + + helm repo update + + + + + Criar um novo arquivo de texto e o nomeie para lz.yaml e abra-o em um editor de + texto. + + Você pode usar qualquer editor de texto. + + + + Copie e cole este código no arquivo: + + + dafilesrv: +- name: direct-access + application: directio + service: + servicePort: 7100 + visibility: local + tls: false + resources: + cpu: "2" + memory: "8G" +dali: [] +dfuserver: [] +eclagent: [] +eclccserver: [] +eclscheduler: [] +esp: [] +roxie: [] +sasha: null +thor: [] + + + + + + Salve e feche o editor de texto. + + + + + Faça o deploy usando o novo chart de + configuração personalizada. + + + + + Abra uma janela de terminal e navegue até o diretório onde + está salvo o arquivo lz.yaml file. + + + + Implante esta "plataforma" LZ somente com a nova configuração + adicionada ao seu comando. + + + helm install mylz hpcc/hpcc -f lz.yaml + + + + + + Confirme que está instalado usando este comando: + + + helm list + + + + @@ -448,7 +1042,7 @@ helm upgrade mycluster hpcc/hpcc -f tworoxies.yaml -f twothors.yaml Os custos de armazenamento não podem ser vistos como um valor separado no ECL Watch. Eles só podem ser visualizados como parte de um - campo de custo na página de resumo de um arquivo lógico. + campo de custo na página de resumo de um arquivo lógico. @@ -697,4 +1291,183 @@ helm upgrade mycluster hpcc/hpcc -f tworoxies.yaml -f twothors.yaml + + + Protegendo Credenciais + + Utilizar o HPCC Systems em um ambiente containerizado tem algumas + preocupações de segurança únicas, ao externalizar componentes normalmente + internalizados, como as credenciais dos administradores LDAP. + + A proteção das credenciais dos administradores LDAP é realizada + usando os segredos do Kubernetes ou do Hashicorp Vault. Como + pré-requisito, você deve estar familiarizado com a configuração de + segredos do Kubernetes e/ou do Hashicorp Vault. + + A conta dos administradores LDAP deve ter direitos de administrador + para todos os Base DNs usados pela plataforma HPCC Systems. Em uma + implantação na nuvem, essas credenciais podem ser expostas. Portanto, uma + boa prática para essas credenciais de administrador é serem protegidas + usando segredos do Kubernetes ou o HashiCorp Vault. + + + Protegedo as credenciais no Kubernetes + + Para criar um secret no Kubernetes para armazenar as credenciais + da conta do usuário do administrador do LDAP, use uma interface de linha + de comando para o Kubernetes e execute um comando semelhante ao seguinte + exemplo: + + kubectl create secret generic admincredssecretname --from-literal=username=hpcc_admin \ + --from-literal=password=t0pS3cr3tP@ssw0rd + + + No exemplo acima, o nome do secret do Kubernetes é + "admincredssecretname", e ele contém as chaves/valores "username" e + "password" da conta do administrador do LDAP. Isso armazena o nome de + usuário e a senha do administrador do LDAP como um segredo do + Kubernetes. Quaisquer propriedades adicionais são ignoradas. + + Você pode verificar o secret que acabou de criar executando o + seguinte comando no Kubernetes. + + kubectl get secret admincredssecretname + + Para obter mais informações sobre o Kubernetes, consulte a + documentação específica para a sua implementação.. + + + Utilizando secrets do Kubernetes + + Para implementar os secrets do Kubernetes, substitua a seção + "secrets:" em HPCC-Platform/helm/hpcc/values.yaml, ou implemente com o + seu próprio gráfico personalizado. Para mais informações sobre como + personalizar sua implementação contêinerizada de Sistemas HPCC, veja + as seções acima sobre técnicas de personalização. + + No seu chat, crie um nome de chave único usado para referenciar + o segredo, e defina-o como o nome do secret que você criou na etapa + anterior. No exemplo acima, era "admincredssecretname". + + Você pode, opcionalmente, definir segredos adicionais conforme + necessário pela configuração de segurança da sua plataforma. Cada um + desses segredos seria criado conforme descrito acima e receberia nomes + únicos. O exemplo abaixo indica como você pode adicionar quaisquer + credenciais ou secrets adicionais aos seus chart Helm, se + necessário. + + A chave/valor "admincredsmountname" já existe por padrão no + arquivo values.yaml fornecido pelo HPCC Systems. A chave é + referenciada no arquivo ldap.yaml do componente. Você pode substituir + estes e adicionar chaves/valores adicionais conforme necessário. O + seguinte exemplo ilustra a adição de "additionalsecretname" e esse + nome deve corresponder ao nome do segredo adicional criado usando as + etapas acima. + + secrets: + authn: + admincredsmountname: "admincredssecretname" #exernalize HPCC Admin creds + additionalmountname: "additionalsecretname" #alternate HPCC Admin creds + + + + + Habilitar autenticação LDAP + + No arquivo ldap.yaml fornecido em + HPCC-Platform/esp/applications/common/ldap/, a "ldapAdminSecretKey" já + está configurada para o nome da chave de montagem ilustrado no exemplo + acima. Para habilitar a autenticação LDAP e modificar este valor, você + ou seu administrador de sistemas podem substituir o componente Helm + ESP/ECLWatch localizado no chart values.yaml, conforme ilustrado no + exemplo seguinte: + + esp: +- name: eclwatch + application: eclwatch + auth: ldap + ldap: + ldapAddress: "myldapserver" + ldapAdminSecretKey: "additionaltmountname" # use alternate secrets creds + + + + + + + + Protegendo crendeciais no HashiCorp Vault + + Para criar e armazenar secrets no HashiCorp Vault, a partir da + linha de comando, execute os seguintes comandos Vault. O nome secreto + usado no exemplo abaixo é "myvaultadmincreds" e deve ser prefixado com + "secret/authn/" conforme ilustrado. As chaves/valores "username" e + "password" do administrador LDAP são necessários. Propriedades + adicionais são ignoradas. + + vault kv put secret/authn/myvaultadmincreds username=hpcc_admin password=t0pS3cr3tP@ssw0rd + + Onde "secret/authn/myvaultadmincreds" é o nome do secret que + contém o nome de usuário e a senha do administrador LDAP. + + Para verificar e confirmar o valores do secret, execute o seguinte + comando: + + vault kv get secret/authn/myvaultadmincreds + + Para obter mais informações sobre como criar segredos para o + HashiCorp Vault, consulte a documentação apropriada da HashiCorp para + sua implementação. + + + Deploy do HashiCorp + Vault + + Deploy dos secrets do HashiCorp Vault quando você sobrescrever a + seção "secrets:" em HPCC-Platform/helm/hpcc/values.yaml, ou em seu + chart de configuração personalizado. Para mais informações sobre como + personalizar sua implantação containerizada do HPCC Systems, veja as + seções acima sobre técnicas de personalização. + + O valor do nome do Vault é definido para este exemplo no chart + gráfico de configuração values-secrets.yaml. Você pode encontrar um + exemplo deste gráfico no repositório HPCC-Platform em + /helm/examples/secrets/values-secrets.yaml. + + vaults: + authn: + - name: my-authn-vault + #The data node in the URL is there for use by the REST API + #The path inside the vault starts after /data + url: http://${env.VAULT_SERVICE_HOST}:${env.VAULT_SERVICE_PORT}/v1/secret/data/authn/${secret} + kind: kv-v2 + + + Você pode inserir isso em seu próprio gráfico de personalização + onde você fornece à sua implantação o nome do cofre que contém as + credenciais. + + + + Referenciando Vault Stored Authentication + + Os nomes de chave "ldapAdminSecretKey" e "ldapAdminVaultId" são + usados pelo gerente de segurança do HPCC Systems para resolver os + segredos, e devem corresponder exatamente quando se utiliza o nome do + Vault configurado nas etapas anteriores. + + esp: +- name: eclwatch + application: eclwatch + auth: ldap + ldap: + ldapAddress: "myldapserver" + ldapAdminSecretKey: "myvaultadmincreds" + ldapAdminVaultId: "my-authn-vault" + + + + + + diff --git a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/LocalDeployment.xml b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/LocalDeployment.xml index f6766ee81e2..ccad69b4f94 100644 --- a/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/LocalDeployment.xml +++ b/docs/PT_BR/ContainerizedHPCC/ContainerizedMods/LocalDeployment.xml @@ -11,7 +11,7 @@ Pré-requisitos - + Todas ferramentas de terceiros devem ser 64-bits. @@ -371,9 +371,9 @@ sasha: Isto não é necessário em ambientes MacOS ou WSL 2. - + - + @@ -426,7 +426,7 @@ OUTPUT(allPeople,,'MyData::allPeople',THOR,OVERWRITE); - + @@ -459,7 +459,7 @@ OUTPUT(allPeople,,'MyData::allPeople',THOR,OVERWRITE); A nova sintaxe é: - ~plane::<storage-plane-name>::<path>::<filename> + '~plane::hpcc-data::tutorial::originalperson' Onde a sintaxe do caminho e do nome do arquivo são as mesmas usadas com a sintaxe file:: . Isso inclui exigir @@ -473,7 +473,8 @@ OUTPUT(allPeople,,'MyData::allPeople',THOR,OVERWRITE); role="bold">C:\hpccdata\hpcc-data\tutorial, poderá fazer referência ao arquivo usando esta sintaxe: - '~plane::data::tutorial::originalperson' + '~plane::data::tutorial::originalperson' + Nota: @@ -485,10 +486,10 @@ OUTPUT(allPeople,,'MyData::allPeople',THOR,OVERWRITE); - + - + - + diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Contains.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Contains.xml index 5960734f750..af00a78b6d0 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Contains.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Contains.xml @@ -71,5 +71,5 @@ B:= STD.Str.Contains( 'abcdefghijklmnopqrstuvwxyz', false); //returns FALSE -- 'z' is missing - + Veja também: Find diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Copy.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Copy.xml index 592a674633c..a292ca555f5 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Copy.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Copy.xml @@ -28,6 +28,7 @@ [ ,preserveCompression ] [ ,noSplit ] [ ,expireDays ] [ ,ensure ]); dfuwuid := @@ -55,7 +56,8 @@ [ ,preserveCompression ] [ ,noSplit ] [ ,expireDays ]); + role="bold">] [ ,ensure]); @@ -193,9 +195,16 @@ expireDays - Opcional. Um valor inteiro indicando o número de dias -           antes de remover automaticamente o arquivo. Se omitido, o - padrão é           -1 (nunca expira). + Opcional. Um valor inteiro indicando o número de dias antes + de remover automaticamente o arquivo. Se omitido, o padrão é -1 + (nunca expira). + + + + ensure + + Opcional. Copia o arquivo lógico, mas não copia partes do + arquivo se elas já existirem. O padrão é FALSO. diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/CreateExternalDirectory.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/CreateExternalDirectory.xml index ce3e3da457e..cd85870b6e7 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/CreateExternalDirectory.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/CreateExternalDirectory.xml @@ -10,7 +10,9 @@ File.CreateExternalDirectory CreateExternalDirectory - ( location, path ( location, path [ , planename ] ) @@ -23,8 +25,8 @@ location - Uma string terminada por nulo que contém o endereço IP da - máquina remota. + Uma string terminada em nulo contendo o endereço IP da + máquina remota. Opcional se planename for fornecido. @@ -33,6 +35,15 @@ Uma string terminada por nulo que contém o caminho do diretório a ser criado. + + + planename + + Uma string terminada em nulo contendo o nome do plano de + dados que contém o arquivo. Opcional se + localização for fornecida, mas + planename é preferível. + @@ -44,8 +55,10 @@ Exemplo: - IP := '10.150.254.6'; -path := '/c$/training/import/NewDir'; -STD.File.CreateExternalDirectory(IP,path); + IMPORT STD; +IP := ''; +path := '/var/lib/HPCCSystems/dropzone/advancedtraining/'; +planename := 'mydropzone'; +STD.File.CreateExternalDirectory(IP,path,planename); diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/DeleteExternalFile.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/DeleteExternalFile.xml index 7e8f29f4458..eaa2ce6d77d 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/DeleteExternalFile.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/DeleteExternalFile.xml @@ -10,7 +10,9 @@ File.DeleteExternalFile DeleteExternalFile - ( location, path ( location, path [ , planename ] ) @@ -23,8 +25,8 @@ location - Uma string terminada por nulo que contém o endereço IP da - máquina remota. + Uma string terminada em nulo contendo o endereço IP da + máquina remota. Opcional se planename for fornecido. @@ -33,6 +35,15 @@ Uma string terminada por nulo que contém o caminho/nome do arquivo a ser removido. + + + planename + + Uma string terminada em nulo contendo o nome do plano de + dados que contém o arquivo. Opcional se + localização for fornecida, mas + planename é preferível. + diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Find.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Find.xml index d0aaca5be4f..93efec74ab1 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Find.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/Find.xml @@ -99,4 +99,6 @@ D := IF(STD.Str.Find('', 'BD', 1) = 0, 'Success', 'Failure - 4'); //success + + Veja também: Contains diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/MoveExternalFile.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/MoveExternalFile.xml index 0b84281c8ff..a0151682c30 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/MoveExternalFile.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/MoveExternalFile.xml @@ -10,8 +10,10 @@ File.MoveExternalFile MoveExternalFile - ( location, frompath, topath - ) + ( location, frompath, topath [ , planename ] ) @@ -23,7 +25,9 @@ location - Uma string terminada por nulo que contém o endereço IP da + Uma string terminada em nulo contendo o endereço IP da + máquina remota. Opcional se planename for + fornecido.Uma string terminada por nulo que contém o endereço IP da máquina remota. @@ -40,6 +44,15 @@ Uma string terminada por nulo que contém o caminho/nome do arquivo de destino. + + + planeName + + Uma string terminada em nulo contendo o nome do plano de + dados que contém o arquivo. Opcional se + machineIP for fornecido, mas + planeName é preferível. + @@ -53,8 +66,10 @@ Exemplo: - IP := '10.150.254.6'; -infile := '/c$/training/import/AdvancedECL/people'; -outfile := '/c$/training/import/DFUtest/people'; -STD.File.MoveExternalFile(IP,infile,outfile); + IMPORT STD; +IP := ''; +infile := '/var/lib/HPCCSystems/dropzone/originalperson'; +outfile := '/var/lib/HPCCSystems/dropzone/originalperson_bak'; +planename := 'mydropzone'; +STD.File.MoveExternalFile(IP,infile,outfile,planename); diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/RemoteDirectory.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/RemoteDirectory.xml index 27e4495ccbb..a1e9d865eba 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/RemoteDirectory.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/RemoteDirectory.xml @@ -4,17 +4,19 @@ RemoteDirectory - STD.File.RemoteDirectory + STD.File.RemoteDirectory( + machineIP, dir [ , + mask ][ , recurse + ][ , planeName ] ) + STD.File.RemoteDirectory File.RemoteDirectory RemoteDirectory - ( machineIP, dir [ , mask ][ , recurse ] ) + @@ -26,7 +28,9 @@ machineIP - Uma string terminada por nulo que contém o endereço IP da + Uma string terminada em nulo contendo o endereço IP da + máquina remota. Opcional se planeName for + fornecido.Uma string terminada por nulo que contém o endereço IP da máquina remota. @@ -55,6 +59,15 @@ FALSE. + + planeName + + Uma string terminada em nulo contendo o nome do plano de + dados que contém o arquivo. Opcional se + machineIP for fornecido, mas + planeName é preferível. + + Return: @@ -78,7 +91,10 @@ END; Exemplo: - OUTPUT(STD.File.RemoteDirectory('edata12','\in','*.d00')); -OUTPUT(STD.File.RemoteDirectory('10.150.254.6', - '/var/lib/HPCCSystems/hpcc-data/thor/','acc*',TRUE)); + IMPORT STD; +machineIP := ''; +dir := '/var/lib/HPCCSystems/dropzone/training'; +recurse:= FALSE; +planeName := 'mydropzone'; +OUTPUT(STD.File.RemoteDirectory(machineIP,dir,'*.csv',recurse,planeName)); diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/TimestampToString.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/TimestampToString.xml new file mode 100644 index 00000000000..69d560cb3e5 --- /dev/null +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/TimestampToString.xml @@ -0,0 +1,88 @@ + + + + TimestampToString + + STD.Date.TimestampToString + (timestamp, format) + + + + + + + + + + timestamp + + Um INTEGER8 contendo o número de microssegundos desde a época + (1 de janeiro de 1970 UTC) + + + + format + + OPCIONAL. O formato da string a ser retornada. Veja a + documentação strftime para detalhes (http://strftime.org/). Se + omitido, o padrão é '%Y-%m-%dT%H:%M:%S.%@' que é no formato + YYYY-MM-DDTHH:MM:SS.ssssss. + + + + Return: + + O timestamp convertido como uma string + no formato especificado. + + + + + + A função TimestampToString + TimestampToString + converte um valor Timestamp_t contendo o número de + microssegundos desde a época (1 de janeiro de 1970 UTC) em uma string + legível por humanos usando um modelo de formato dos padrões strftime. Dois + especificadores de formato adicionais estão disponíveis para exibir segundos + fracionados: + + + + + + + + + + %@ + + Fração de segundos em microssegundos (6 dígitos) + + + + %# + + Fração de segundos em microssegundos (3 dígitos) + + + + + + As frações de milissegundo são truncadas de microssegundos quando + necessário. + + O comprimento máximo da string resultante é de 255 caracteres. + + Exemplo: + + IMPORT STD; +STD.Date.TimestampToString(1048998120000000, '%A %B %d, %Y T%H:%M:%S.%#'); + // returns Sunday March 30, 2003 T04:22:00.000 + + + + diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/getElapsedMs.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/getElapsedMs.xml new file mode 100644 index 00000000000..44296549cf6 --- /dev/null +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-Mods/getElapsedMs.xml @@ -0,0 +1,55 @@ + + + + getElapsedMs + + result := + STD.System.Log.getElapsedMs + STD.System.Log.getElapsedMs + + System.Log.getElapsedMs + + Log.getElapsedMs + + getElapsedMs + + (); + + + + + + + + + + Return: + + getElapsedMs retorna o tempo decorrido em + milissegundos.. + + + + + + A função getElapsedMs retorna o tempo + decorrido atual da consulta (em ms) no Roxie. + + Este é o tempo decorrido quando STD.System.Log.getElapsedMs() é + chamado. Como ECL é uma linguagem declarativa, o código não é + necessariamente executado em sequência. Você tem que ter cuidado ao tentar + obter o tempo decorrido para um ponto específico no seu código. Você pode + olhar os gráficos do Workunit para ver o ponto exato em que a atividade é + executada. > + + Para uso apenas no Roxie. Um erro é + retornado se você tentar executar no Thor ou hThor. + + Exemplo: + + IMPORT STD; +STD.System.Debug.Sleep (1054); // pause processing for 1054 milliseconds. +OUTPUT(STD.System.Log.getElapsedMs(), NAMED('Elapsed')); //returns total time elapsed + + diff --git a/docs/PT_BR/ECLStandardLibraryReference/SLR-includer.xml b/docs/PT_BR/ECLStandardLibraryReference/SLR-includer.xml index 631f541f9be..dfe37d4b67b 100644 --- a/docs/PT_BR/ECLStandardLibraryReference/SLR-includer.xml +++ b/docs/PT_BR/ECLStandardLibraryReference/SLR-includer.xml @@ -63,9 +63,7 @@ - - <emphasis>Arquivos lógicos</emphasis> - + <emphasis>Arquivos lógicos</emphasis> @@ -401,7 +399,9 @@ xmlns:xi="http://www.w3.org/2001/XInclude"/> - <emphasis>Manipulação de Data e Hora</emphasis> + + <emphasis>Manipulação de Data e Hora</emphasis> + @@ -490,6 +490,9 @@ + + - <emphasis>Logging</emphasis> + + <emphasis>Logging</emphasis> + @@ -603,6 +608,9 @@ + + diff --git a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Comm_Line_DFU.xml b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Comm_Line_DFU.xml index e886ed47f0d..363b13d6246 100644 --- a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Comm_Line_DFU.xml +++ b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Comm_Line_DFU.xml @@ -868,6 +868,14 @@ dfuplus action=despray srcname=mytest::test:spraytest se a compactação do arquivo de origem deve ser preservada. Se omitido, o padrão é 1. + + + ensure + + Opcional. Copia o arquivo lógico, mas não copia + partes do arquivo se eles já existirem. O padrão é + FALSE. + diff --git a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_ECL_CLI.xml b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_ECL_CLI.xml index 2feab2c86f5..6120dc370c2 100644 --- a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_ECL_CLI.xml +++ b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_ECL_CLI.xml @@ -165,6 +165,13 @@ retorna uma lista de todos os IDs de usuário-chave que podem ser usados pelo comando sign. + + + url-secret-name + + gerar um nome secreto a partir de uma URL para + mapeamento automático de URL + @@ -8561,6 +8568,65 @@ ecl getname -wu W201407* + + ecl url-secret-name + + ecl url-secret-name url + [--username=<username>] + + + + + + + + + + ecl url-secret-name + + Gera um nome secreto a partir de uma URL para + mapeamento automático de URL + + + + url + + URL para convert em um nome secreto. + + + + --username + + Opcional. O username associado a URL. Isto sobrepõe + qualquer username inserida na URL. + + + + O comando ecl url-secret-name + gera um nome secreto a partir de uma URL que pode ser usado para + suportar o mapeamento automático da URL para segredo no ECL + SOAPCALL/HTTPCALL. + + Um nome de usuário pode ser inserido na URL, como + https://username@example.com, ou passado como um parâmetro usando a + opção --username=username. Se um nome de usuário for passado como + parâmetro, ele substitui um nome de usuário na URL. + + As senhas inseridas na URL não são necessárias e serão + ignoradas. + + Quando o mapeamento secreto de URL do ECL SOAPCALL está ativado, + SOAPCALL converterá a URL fornecida em um nome deste formato. ECL, + então, tentará localizar o segredo e, se encontrado, usará o conteúdo + do segredo, ao invés da URL original. + + Exemplos: + + ecl url-secret-name https://example.com --username jimi +ecl url-secret-name http://example.com --username jimi + + + ecl roxie memlock diff --git a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview.xml b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview.xml index d1fcf97ed58..ec4954ab02c 100644 --- a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview.xml +++ b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview.xml @@ -135,55 +135,40 @@ Instale o software de ferramentas do cliente em sua máquina. + + - - - Nota: - - - Para grandes workunits ECL, o compilador de 32 bits - (eclcc) pode ficar sem memória mais rapidamente do que a - versão de 64 bits. Portanto, na maioria dos casos, você deve - instalar a versão de 64 bits. No entanto, para máquinas com - memória de 4 GB ou menos, você deve usar as ferramentas de - cliente de 32 bits. - - - - - Windows: + Windows: - Execute o arquivo executável, p.ex.: - hpccsystems-clienttools_community-7.X.X-XWindows-i386.exe em sua - máquina. Siga os comandos para concluir a instalação. + Execute o arquivo executável, p.ex.: + hpccsystems-clienttools_community-7.X.X-XWindows-i386.exe em sua + máquina. Siga os comandos para concluir a instalação. - Sistemas baseados em RPM - (CentOS/RedHat): + Sistemas baseados em RPM (CentOS/RedHat): + - Será fornecido um pacote de instalação do RPM. Instale o RPM - com o comutador -Uvh, o “U” ou “atualização” fará uma atualização se - uma versão prévia já tiver sido instalada. sudo rpm -Uvh <rpm file name> + Será fornecido um pacote de instalação do RPM. Instale o RPM com o + comutador -Uvh, o “U” ou “atualização” fará uma atualização se uma + versão prévia já tiver sido instalada. sudo rpm -Uvh <rpm file name> - Sistemas baseados em Debian - (Ubuntu): + Sistemas baseados em Debian + (Ubuntu): - Um pacote Debian é disponibilizado para instalações Ubuntu. - Para instalar o pacote, use: + Um pacote Debian é disponibilizado para instalações Ubuntu. Para + instalar o pacote, use: - sudo dpkg -i <deb filename> + sudo dpkg -i <deb filename> - Após instalar o pacote, execute o comando a seguir para - "arrumar" as dependências: + Após instalar o pacote, execute o comando a seguir para "arrumar" + as dependências: - sudo apt-get install -f + sudo apt-get install -f - Mac OSX: + Mac OSX: - Execute o arquivo de instalação, p.ex.: - hpccsystems-clienttools_community-7.X.X-XDarwin-x86_64.dmg. Siga os - comandos para concluir a instalação. - - + Execute o arquivo de instalação, p.ex.: + hpccsystems-clienttools_community-7.X.X-XDarwin-x86_64.dmg. Siga os + comandos para concluir a instalação. diff --git a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview_withoutIDE.xml b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview_withoutIDE.xml index dc76b2f9915..0e8c4e2300e 100644 --- a/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview_withoutIDE.xml +++ b/docs/PT_BR/HPCCClientTools/CT_Mods/CT_Overview_withoutIDE.xml @@ -126,55 +126,40 @@ Instale o software de ferramentas do cliente em sua máquina. + + - - - Nota: - - - Para grandes workunits ECL, o compilador de 32 bits - (eclcc) pode ficar sem memória mais rapidamente do que a - versão de 64 bits. Portanto, na maioria dos casos, você deve - instalar a versão de 64 bits. No entanto, para máquinas com - memória de 4 GB ou menos, você deve usar as ferramentas de - cliente de 32 bits. - - - - - Windows: + Windows: - Execute o arquivo executável, p.ex.: - hpccsystems-clienttools_community-7.X.X-XWindows-i386.exe em sua - máquina. Siga os comandos para concluir a instalação. + Execute o arquivo executável, p.ex.: + hpccsystems-clienttools_community-7.X.X-XWindows-i386.exe em sua + máquina. Siga os comandos para concluir a instalação. - Sistemas baseados em RPM - (CentOS/RedHat): + Sistemas baseados em RPM (CentOS/RedHat): + - Será fornecido um pacote de instalação do RPM. Instale o RPM - com o comutador -Uvh, o “U” ou “atualização” fará uma atualização se - uma versão prévia já tiver sido instalada. sudo rpm -Uvh <rpm file name> + Será fornecido um pacote de instalação do RPM. Instale o RPM com o + comutador -Uvh, o “U” ou “atualização” fará uma atualização se uma + versão prévia já tiver sido instalada. sudo rpm -Uvh <rpm file name> - Sistemas baseados em Debian - (Ubuntu): + Sistemas baseados em Debian + (Ubuntu): - Um pacote Debian é disponibilizado para instalações Ubuntu. - Para instalar o pacote, use: + Um pacote Debian é disponibilizado para instalações Ubuntu. Para + instalar o pacote, use: - sudo dpkg -i <deb filename> + sudo dpkg -i <deb filename> - Após instalar o pacote, execute o comando a seguir para - "arrumar" as dependências: + Após instalar o pacote, execute o comando a seguir para "arrumar" + as dependências: - sudo apt-get install -f + sudo apt-get install -f - Mac OSX: + Mac OSX: - Abra o arquivo de imagem de disco da Apple (.dmg) e execute o - pacote de instalação (.pkg). Siga os comandos para concluir a - instalação. - - + Abra o arquivo de imagem de disco da Apple (.dmg) e execute o + pacote de instalação (.pkg). Siga os comandos para concluir a + instalação. diff --git a/docs/PT_BR/HPCCClientTools/CT_Mods/ECLCC.xml b/docs/PT_BR/HPCCClientTools/CT_Mods/ECLCC.xml index bbfcd6021b5..de59480df0c 100644 --- a/docs/PT_BR/HPCCClientTools/CT_Mods/ECLCC.xml +++ b/docs/PT_BR/HPCCClientTools/CT_Mods/ECLCC.xml @@ -180,15 +180,6 @@ listagem do arquivo a serem adicionados - - -checkDirty - - Faz com que o eclcc gere um aviso para qualquer - atributo que tenha sido modificado (conforme o resultado do - status git) O uso dessa função exige que o git esteja - instalado e disponível no caminho. - - -foption[=value] @@ -346,13 +337,6 @@ Passa a opção xx para o compilador c++ - - -Dname=value - - Substitui a definição do “nome” global do - atributo - - -Wl,xx @@ -378,6 +362,12 @@ -g) + + -save-temps + + Não exclui arquivos intermediários + + -shared @@ -390,6 +380,50 @@ + Opções de resolução de arquivos: + + + + + + + + + + + + -dfs=ip + + Use IP especificado para a resolução do nome do arquivo + DFS + + + + -scope=prefix + + Use o prefixo de escopo especificado na resolução do + nome do arquivo DFS + + + + -user=id + + Use o nome de usuário especificado na resolução do nome + do arquivo + + + + -password=xxx + + Use a senha especificada na resolução do nome do + arquivo DFS (em branco para solicitar) + + + + + + + Outras Opções: @@ -401,6 +435,12 @@ + + -aoption[=value] + + Configura opções da aplicação + + --allow=str @@ -414,6 +454,20 @@ recursos + + -allowsigned + + Permite somente acesso a funcionalidade com código + assinado + + + + -fisComplexCompile + + Impede tentativas de compilação como um processo filho + quando uma consulta é complexa + + -b @@ -429,6 +483,28 @@ arquivos + + -checkDirty + + Faz com que o eclcc gere um aviso para qualquer + atributo que tenha sido modificado (conforme o resultado do + status git) O uso dessa função exige que o git esteja + instalado e disponível no caminho. + + + + --component + + Defina o nome do componente em nome do qual isso está + sendo executado + + + + -Dname=value + + Sobrepõem a definição global do atributo 'name' + + --deny=all @@ -464,12 +540,28 @@ Executa testes internos + + + + + + + Other options (continued): + + + + + + + + + - --legacy + --leakcheck - Usa semântica de importação antiga - (descontinuada) + Limpe a memória, pois está verificando se há vazamentos + de memória @@ -479,6 +571,20 @@ stdout (formato XML) + + -legacyimport + + Utiliza semântica legado de importação + (descontinuado) + + + + -legacywhen + + Use semântica de legado quando/há efeitos colaterais + (descontinuado) + + --logfile <file> @@ -491,6 +597,67 @@ Define o nível de detalhe no arquivo de log + + --maxErrors=<n> + + Número limite de erros, abortando no nth (padrão = + 5) + + + + --metacache=x + + Especifique o diretório para armazenar as informações + meta distribuídas do indexador eclcc. Para desabilitar o + indexador, defina um valor vazio usando '--metacache='. Se + omitido, o local padrão é .eclcc/metacache. + + + + --nologfile + + Não registra nenhum log + + + + --nogpg + + Não execute o gpg para verificar assinaturas em códigos + assinados + + + + --nosourcepath + + Compila como se a fonte fosse de stdin + + + + --nostdinc + + Não inclui o diretório atual em -I + + + + -pch + + Generate precompiled header for eclinclude4.hpp + + + + -P <path> + + Especifica o caminho para os arquivos de saída (somente + com a opção -b) + + + + -showpaths + + Exibe informações sobre os caminhos de busca eclcc + utilizando + + -specs <file> @@ -512,6 +679,16 @@ da compilação + + -wxxxx=level + + Configura a severidade para um warning code em + particular ou categoria. Todas as opções para os níveis + são: all | ignore | log | warning | error | fail + -wall aplica a severidade + padrão para todos os alertas + + --version diff --git a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrMod.xml b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrMod.xml index 3f9a709baf6..30e0e42555e 100644 --- a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrMod.xml +++ b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrMod.xml @@ -9,7 +9,7 @@ Plugin) oferece um mecanismo de criação e implementação de Security Manager Plugins customizados. - + Desenvolvimento do Plugin Um Security Manager Plugin customizado consiste de um arquivo de @@ -47,9 +47,9 @@ Definição de Buildset O plugin - declara a si mesmo como um componente do Security Manager Plugin do HPCC , - assim como declara a localização dos arquivos do plugin e o esquema de - definição de configuração. + declara a si mesmo como um componente do Security Manager Plugin do HPCC + Systems, assim como declara a localização dos arquivos do plugin e o + esquema de definição de configuração. EXEMPLO: @@ -160,8 +160,6 @@ </xs:element> </xs:schema> - - genenvrules.conf – (opcional) Este arquivo permite que o plugin adicione a si mesmo na lista "do_not(automatically)_generate". Embora seja um arquivo opcional, ele é diff --git a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrModConfDeploy.xml b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrModConfDeploy.xml index 9f65d004678..f8a5d09de83 100644 --- a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrModConfDeploy.xml +++ b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/SecMgrModConfDeploy.xml @@ -8,7 +8,8 @@ As seções a seguir detalham o processo de configuração de seu HPCC Systems para usar o Plugin do Gerenciador de Segurança. - + Como Configurar um Plugin do Gerenciador de Segurança Após ter sido instalado, o plugin pode ser configurado na plataforma diff --git a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/WUTool.xml b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/WUTool.xml index 0ffc40b1f86..95d78fcdf5d 100644 --- a/docs/PT_BR/HPCCSystemAdmin/SA-Mods/WUTool.xml +++ b/docs/PT_BR/HPCCSystemAdmin/SA-Mods/WUTool.xml @@ -17,13 +17,13 @@ - + - Actions + Actions @@ -53,6 +53,21 @@ Dump de resultados de uma workunit específica. + + info <workunits> <filter> + + Este comando fornece acesso filtrado a estatísticas e outras + informações de uma workunit.Consulte a tabela seguinte para + obter informações adicionais sobre o parâmetro info. + + + + analisa a <workunit> + + Analisa a workunit para destacar possíveis economias de + custos. + + archive <workunits> @@ -84,7 +99,7 @@ validate Verifique o conteúdo do repositório da workunit quanto a - erros. [FIX=1] will try to repair any issues found. + erros. [FIX=1] irá reparar qualquer ocorrência encontrada. @@ -99,6 +114,221 @@ Inicializa o respositório de uma nova workunit + + + graph <wu> + + Gera uma representação alternativa do graph com detalhes da + execução + + + + activity <wu> + + Quais atividades estão em execução em um determinado + intervalo de tempo (em ordem cronológica)<wu> + [">scope|mintime"] ["<scope|maxtime"] + [threshold=n%] + + + + hotspot <wu> [<activity>] + + Localiza hotspots para workunit (ou uma atividade em + particular) + + + + critical <wu> <activity> + + Quais atividades estão em execução em ordem de + execução + + + + depend <wu> <activity> +<activity> + + Localiza padrões entre duas atividades + + + + depend <wu> ?<activity>:startTime + + Quais depedências consomem um grande % no início da + atividade + + + + help <command> + + Mais ajuda por meio de comando + + + + + + A tabela a seguir fornece mais informações para a utilidade wutool + emitida com o parâmetro action=info: + + + + + + + + + + info + parâmetros + + + + + + info <workunits> <filter> + + Este comando fornece acesso filtrado às estatísticas e outras + informações de uma workunit.O filtro pode incluir os seguintes + elementos (aqueles indicados por * podem ser repetidos): + + + + + + + Quais escopos + correspondem: + + + + + scope[<scope-id>]* + + escope para correspodência + + + + + stype[<scope-type>]* + + escope do tipo de correspondência + + + + id[<id>]* + + o id do escopo para correspondência + + + + + + NOTA: escopo, stype e id não + podem ser especificados no mesmo filtro + + + + depth[n | + low..high] + + intervalo de profundidades para buscar uma + correspondência. + + + + source[global|stats|graph|all]* + + quais fontes dentro da workunit a pesquisar. O padrão são as + melhores fontes para o resto do filtro. + + + + where[<statistickind> | <statistickind> +(=|<|<=|>|>=) value | +<statistickind>=low..high] + + filtrar pela existência de estatística ou intervalo de + valores. + + + + + + Quais escopos estão inclusos nos + resultados: + + + + matched[true|false] + + os escopos correspondentes são retornados? + + + + nested[<depth>|all] + + qual aninhamento de escopos dentro de um escopo + correspondente estão nos resultados (padrão para '0' se + correspondente[true] e 'todos' se correspondente[false]). + + + + includetype[<scope-type>]* + + quais tipos de escopo devem ser incluídos? + + + + + + Qual informação sobre o escopo é + reportado: + + + + properties[statistics|hints| +attributes|scope|all]* + + + + + + statistic[<statistic-kind>|none|all]* + + + + + + attribute[<attribute-name>|none|all]* + + + + + + hint[<hint-name>]* + + + + + + property[<statistic-kind>| +<attribute-name>|<hint-name>]* + + incluir propriedade (categoria é deduzida) + + + + measure[<measure>] + + todas as estatísticas com medidas específicas. + + + + version[<version>] + + versão mínima para retornar + diff --git a/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/UserSecurityMaint.xml b/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/UserSecurityMaint.xml index 87b13636cd0..90defe664ac 100644 --- a/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/UserSecurityMaint.xml +++ b/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/UserSecurityMaint.xml @@ -1622,6 +1622,31 @@ Leitura + + + SashaAccess + + Acesso para o serviço WsSasha + + Access + + + + + + Listar Workunits + + Read + + + + + + Archivar Workunits, restaurar Workunits + arquivadas + + Full + diff --git a/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/hpcc_ldap.xml b/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/hpcc_ldap.xml index d4cb1a63b8b..f4724a7e8fe 100644 --- a/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/hpcc_ldap.xml +++ b/docs/PT_BR/Installing_and_RunningTheHPCCPlatform/Inst-Mods/hpcc_ldap.xml @@ -293,6 +293,27 @@ + + Gerente de Segurança de Usuário Único + + O gerenciador de segurança de usuário único é um gerenciador de + segurança especializado que permite que uma combinação de nome de + usuário/senha seja especificada na linha de comando de inicialização do + ESP. Em tempo de execução, quando você tenta acessar qualquer recurso do + ESP que exija autenticação, como o ECL Watch, deve especificar uma + combinação de nome de usuário/senha. + + Um gerenciador de segurança de usuário único pode ser útil para uma + implantação personalizada onde você não deseja configurar um servidor LDAP + inteiro ou criar um arquivo HTPASSWD do Linux, como um ambiente de sala de + aula ou uma Máquina Virtual personalizada do HPCC Systems. + + Veja o documento Security + Manager Plugin Framework para maiores informações sobre + configurações e implantar os plugins Security Manager. + + Utilizando Autenticação LDAP diff --git a/esp/src/Login.html b/esp/src/Login.html index 42208eceae2..fcac7c377db 100644 --- a/esp/src/Login.html +++ b/esp/src/Login.html @@ -112,6 +112,8 @@ function (ready, nlsHPCCMod) { var nlsHPCC = nlsHPCCMod.default; ready(function () { + window.localStorage.setItem("redirectAfterLogin", window.location.hash); + var loginStr = document.getElementById("loginStr"); var error = document.getElementById("hidden_msg"); var disabled = document.getElementById('disabled_msg'); diff --git a/esp/src/package-lock.json b/esp/src/package-lock.json index bc4b85a6248..1a1d9ac0fbf 100644 --- a/esp/src/package-lock.json +++ b/esp/src/package-lock.json @@ -18,7 +18,7 @@ "@hpcc-js/chart": "2.83.3", "@hpcc-js/codemirror": "2.61.4", "@hpcc-js/common": "2.71.17", - "@hpcc-js/comms": "2.92.1", + "@hpcc-js/comms": "2.92.2", "@hpcc-js/dataflow": "8.1.6", "@hpcc-js/eclwatch": "2.74.3", "@hpcc-js/graph": "2.85.15", @@ -1855,9 +1855,9 @@ } }, "node_modules/@hpcc-js/comms": { - "version": "2.92.1", - "resolved": "https://registry.npmjs.org/@hpcc-js/comms/-/comms-2.92.1.tgz", - "integrity": "sha512-nx4JJUSpU1m/Yd53PsbEL26DQFx+3UF0Pelk5O0BY2eFGpPVaQ9jHeWvuMJCHHpHcbxUtWN5nlwZlZgE9CFptA==", + "version": "2.92.2", + "resolved": "https://registry.npmjs.org/@hpcc-js/comms/-/comms-2.92.2.tgz", + "integrity": "sha512-9AbPnCYuTF6OhbSiG5QMDA2vuF457YL88h2ltuxPOjsOxp9Dp5VFlTkh88vW1W3Yph/+faGhiqUSvLMgFIwXEA==", "dependencies": { "@hpcc-js/ddl-shim": "^2.20.6", "@hpcc-js/util": "^2.51.0", diff --git a/esp/src/package.json b/esp/src/package.json index f823572534d..b104c55aed4 100644 --- a/esp/src/package.json +++ b/esp/src/package.json @@ -44,7 +44,7 @@ "@hpcc-js/chart": "2.83.3", "@hpcc-js/codemirror": "2.61.4", "@hpcc-js/common": "2.71.17", - "@hpcc-js/comms": "2.92.1", + "@hpcc-js/comms": "2.92.2", "@hpcc-js/dataflow": "8.1.6", "@hpcc-js/eclwatch": "2.74.3", "@hpcc-js/graph": "2.85.15", diff --git a/esp/src/src-react/components/ECLPlayground.tsx b/esp/src/src-react/components/ECLPlayground.tsx index ecee18566cd..665e0c699ad 100644 --- a/esp/src/src-react/components/ECLPlayground.tsx +++ b/esp/src/src-react/components/ECLPlayground.tsx @@ -1,14 +1,17 @@ import * as React from "react"; import { ReflexContainer, ReflexElement, ReflexSplitter } from "../layouts/react-reflex"; -import { PrimaryButton, IconButton, IIconProps, Link, Dropdown, IDropdownOption, TextField, useTheme } from "@fluentui/react"; +import { IconButton, IIconProps, Link, Dropdown, IDropdownOption, TextField, useTheme } from "@fluentui/react"; +import { Button } from "@fluentui/react-components"; +import { CheckmarkCircleRegular, DismissCircleRegular, QuestionCircleRegular } from "@fluentui/react-icons"; import { scopedLogger } from "@hpcc-js/util"; import { useOnEvent } from "@fluentui/react-hooks"; import { mergeStyleSets } from "@fluentui/style-utilities"; import { ECLEditor, IPosition } from "@hpcc-js/codemirror"; -import { Workunit, WUUpdate } from "@hpcc-js/comms"; +import { Workunit, WUUpdate, WorkunitsService } from "@hpcc-js/comms"; import { HolyGrail } from "../layouts/HolyGrail"; import { DojoAdapter } from "../layouts/DojoAdapter"; import { pushUrl } from "../util/history"; +import { debounce } from "../util/throttle"; import { darkTheme } from "../themes"; import { InfoGrid } from "./InfoGrid"; import { TabbedResults } from "./Results"; @@ -77,6 +80,9 @@ const playgroundStyles = mergeStyleSets({ borderRight: borderStyle } }, + ".fui-Button": { + height: "min-content" + }, ".ms-Label": { marginRight: "12px" }, @@ -155,43 +161,58 @@ const warningIcon: IIconProps = { title: nlsHPCC.ErrorWarnings, ariaLabel: nlsHP const resultsIcon: IIconProps = { title: nlsHPCC.Outputs, ariaLabel: nlsHPCC.Outputs, iconName: "Table" }; const graphIcon: IIconProps = { title: nlsHPCC.Visualizations, ariaLabel: nlsHPCC.Visualizations, iconName: "BarChartVerticalFill" }; -const displayErrors = (wu, editor) => { +const displayErrors = async (wu = null, editor, errors = []) => { if (!editor) return; - wu.fetchECLExceptions().then(errors => { - errors.forEach(err => { - const lineError = err.LineNo; - const lineErrorNum = lineError > 0 ? lineError - 1 : 0; - const startPos: IPosition = { - ch: (err.Column > 0) ? err.Column - 1 : 0, - line: lineErrorNum - }; - const endPos: IPosition = { - ch: editor.getLineLength(lineErrorNum), - line: lineErrorNum - }; - - switch (err.Severity) { - case "Info": - editor.highlightInfo(startPos, endPos); - break; - case "Warning": - editor.highlightWarning(startPos, endPos); - break; - case "Error": - default: - editor.highlightError(startPos, endPos); - break; - } - }); + if (wu) { + errors = await wu.fetchECLExceptions(); + } + if (!errors.length) { + editor.removeAllHighlight(); + } + errors.forEach(err => { + const lineError = err.LineNo; + const lineErrorNum = lineError > 0 ? lineError - 1 : 0; + const startPos: IPosition = { + ch: (err.Column > 0) ? err.Column - 1 : 0, + line: lineErrorNum + }; + const endPos: IPosition = { + ch: editor.getLineLength(lineErrorNum), + line: lineErrorNum + }; + + switch (err.Severity) { + case "Info": + editor.highlightInfo(startPos, endPos); + break; + case "Warning": + editor.highlightWarning(startPos, endPos); + break; + case "Error": + default: + editor.highlightError(startPos, endPos); + break; + } }); }; +const service = new WorkunitsService({ baseUrl: "" }); + +enum SyntaxCheckResult { + Unknown, + Failed, + Passed +} + interface ECLEditorToolbarProps { editor: ECLEditor; outputMode: OutputMode; setOutputMode: (_: OutputMode) => void; workunit: Workunit; setWorkunit: (_: Workunit) => void; + setSyntaxErrors: (_: any) => void; + syntaxStatusIcon: number; + setSyntaxStatusIcon: (_: number) => void; } const ECLEditorToolbar: React.FunctionComponent = ({ @@ -199,7 +220,10 @@ const ECLEditorToolbar: React.FunctionComponent = ({ outputMode, setOutputMode, workunit, - setWorkunit + setWorkunit, + setSyntaxErrors, + syntaxStatusIcon, + setSyntaxStatusIcon }) => { const [cluster, setCluster] = React.useState(""); @@ -258,6 +282,24 @@ const ECLEditorToolbar: React.FunctionComponent = ({ } }, [cluster, editor, playgroundResults, queryName, setQueryNameErrorMsg]); + const checkSyntax = React.useCallback(() => { + service.WUSyntaxCheckECL({ + ECL: editor.ecl(), + Cluster: cluster + }).then(response => { + if (response.Errors) { + setSyntaxStatusIcon(SyntaxCheckResult.Failed); + setSyntaxErrors(response.Errors.ECLException); + displayErrors(null, editor, response.Errors.ECLException); + setOutputMode(OutputMode.ERRORS); + } else { + setSyntaxStatusIcon(SyntaxCheckResult.Passed); + setSyntaxErrors([]); + displayErrors(null, editor, []); + } + }); + }, [cluster, editor, setOutputMode, setSyntaxErrors, setSyntaxStatusIcon]); + const handleKeyUp = React.useCallback((evt) => { switch (evt.key) { case "Enter": @@ -282,10 +324,19 @@ const ECLEditorToolbar: React.FunctionComponent = ({ return
{showSubmitBtn ? ( - + ) : ( - + )} + = (props const [query, setQuery] = React.useState(""); const [selectedEclSample, setSelectedEclSample] = React.useState(""); const [eclContent, setEclContent] = React.useState(""); + const [syntaxErrors, setSyntaxErrors] = React.useState([]); + const [syntaxStatusIcon, setSyntaxStatusIcon] = React.useState(SyntaxCheckResult.Unknown); const [eclSamples, setEclSamples] = React.useState([]); React.useEffect(() => { @@ -417,6 +470,13 @@ export const ECLPlayground: React.FunctionComponent = (props }, [editor]); useOnEvent(document, "eclwatch-theme-toggle", handleThemeToggle); + const handleEclChange = React.useMemo(() => debounce((evt) => { + if (editor.hasFocus()) { + setSyntaxStatusIcon(SyntaxCheckResult.Unknown); + } + }, 300), [editor]); + useOnEvent(window, "keyup", handleEclChange); + return

{nlsHPCC.title_ECLPlayground}

@@ -437,7 +497,8 @@ export const ECLPlayground: React.FunctionComponent = (props main={} footer={ @@ -453,7 +514,7 @@ export const ECLPlayground: React.FunctionComponent = (props {outputMode === OutputMode.ERRORS ? ( - + ) : outputMode === OutputMode.RESULTS ? ( diff --git a/esp/src/src-react/components/InfoGrid.tsx b/esp/src/src-react/components/InfoGrid.tsx index 143cbf1be48..0689c515399 100644 --- a/esp/src/src-react/components/InfoGrid.tsx +++ b/esp/src/src-react/components/InfoGrid.tsx @@ -32,11 +32,13 @@ interface FilterCounts { } interface InfoGridProps { - wuid: string; + wuid?: string; + syntaxErrors?: any[]; } export const InfoGrid: React.FunctionComponent = ({ - wuid + wuid = null, + syntaxErrors = [] }) => { const [costChecked, setCostChecked] = React.useState(true); @@ -46,6 +48,7 @@ export const InfoGrid: React.FunctionComponent = ({ const [otherChecked, setOtherChecked] = React.useState(true); const [filterCounts, setFilterCounts] = React.useState({ cost: 0, penalty: 0, error: 0, warning: 0, info: 0, other: 0 }); const [exceptions] = useWorkunitExceptions(wuid); + const [errors, setErrors] = React.useState([]); const [data, setData] = React.useState([]); const { selection, setSelection, @@ -61,6 +64,14 @@ export const InfoGrid: React.FunctionComponent = ({ { key: "others", onRender: () => setOtherChecked(value)} styles={{ root: { paddingTop: 8, paddingRight: 8 } }} /> } ], [filterCounts.cost, filterCounts.error, filterCounts.info, filterCounts.other, filterCounts.warning]); + React.useEffect(() => { + if (syntaxErrors.length) { + setErrors(syntaxErrors); + } else { + setErrors(exceptions); + } + }, [syntaxErrors, exceptions]); + // Grid --- const columns = React.useMemo((): FluentColumns => { return { @@ -137,7 +148,7 @@ export const InfoGrid: React.FunctionComponent = ({ info: 0, other: 0 }; - const filteredExceptions = exceptions.map((row, idx) => { + const filteredExceptions = errors?.map((row, idx) => { if (row.Source === "Cost Optimizer") { row.Severity = "Cost"; } @@ -199,7 +210,7 @@ export const InfoGrid: React.FunctionComponent = ({ }); setData(filteredExceptions); setFilterCounts(filterCounts); - }, [costChecked, errorChecked, exceptions, infoChecked, otherChecked, warningChecked]); + }, [costChecked, errorChecked, errors, infoChecked, otherChecked, warningChecked]); React.useEffect(() => { if (data.length) { diff --git a/esp/src/src-react/components/Logs.tsx b/esp/src/src-react/components/Logs.tsx index 20cca36772c..d9703c0e74f 100644 --- a/esp/src/src-react/components/Logs.tsx +++ b/esp/src/src-react/components/Logs.tsx @@ -13,7 +13,7 @@ import { Filter } from "./forms/Filter"; import { Fields } from "./forms/Fields"; import { ShortVerticalDivider } from "./Common"; -const maximumTimeUntilRefresh = 8 * 60 * 60 * 1000; +const eightHours = 8 * 60 * 60 * 1000; const startTimeOffset = 1 * 60 * 60 * 1000; const endTimeOffset = 23 * 60 * 60 * 1000; const defaultStartDate = new Date(new Date().getTime() - startTimeOffset); @@ -116,8 +116,9 @@ export const Logs: React.FunctionComponent = ({ if (typeof filter.StartDate === "string") { filter.StartDate = new Date(filter.StartDate + ":00Z"); } - if (filter.StartDate && now.getTime() - filter.StartDate.getTime() > maximumTimeUntilRefresh) { - filter.StartDate = new Date(now.getTime() - startTimeOffset); + if (!filter.StartDate) { + //assign a reasonable default start date if one isn't set + filter.StartDate = new Date(now.getTime() - eightHours); } if (!filter.EndDate) { filter.EndDate = new Date(now.getTime() + endTimeOffset); diff --git a/esp/src/src-react/components/Queries.tsx b/esp/src/src-react/components/Queries.tsx index a0da7144844..e11938a5734 100644 --- a/esp/src/src-react/components/Queries.tsx +++ b/esp/src/src-react/components/Queries.tsx @@ -180,7 +180,7 @@ export const Queries: React.FunctionComponent = ({ const [DeleteConfirm, setShowDeleteConfirm] = useConfirm({ title: nlsHPCC.Delete, - message: nlsHPCC.DeleteSelectedWorkunits, + message: nlsHPCC.DeleteSelectedQueries, items: selection.map(s => s.Id), onSubmit: React.useCallback(() => { WsWorkunits.WUQuerysetQueryAction(selection, "Delete").then(() => refreshTable.call(true)); diff --git a/esp/src/src-react/components/QueryDetails.tsx b/esp/src/src-react/components/QueryDetails.tsx index af9ef819876..bbd2e3e969c 100644 --- a/esp/src/src-react/components/QueryDetails.tsx +++ b/esp/src/src-react/components/QueryDetails.tsx @@ -36,19 +36,23 @@ export const QueryDetails: React.FunctionComponent = ({ const [logicalFileCount, setLogicalFileCount] = React.useState(0); const [superFileCount, setSuperFileCount] = React.useState(0); const [libsUsedCount, setLibsUsedCount] = React.useState(0); + const [suspended, setSuspended] = React.useState(false); + const [activated, setActivated] = React.useState(false); React.useEffect(() => { setQuery(ESPQuery.Get(querySet, queryId)); }, [setQuery, queryId, querySet]); React.useEffect(() => { - query?.getDetails().then(({ WUQueryDetailsResponse }) => { + query?.getDetails().then(() => { setWuid(query.Wuid); setLogicalFileCount(query.LogicalFiles?.Item?.length); setSuperFileCount(query.SuperFiles?.SuperFile?.length); setLibsUsedCount(query.LibrariesUsed?.Item?.length); + setActivated(query.Activated); + setSuspended(query.Suspended); }); - }, [query, setLogicalFileCount, setSuperFileCount, setLibsUsedCount]); + }, [query]); const onTabSelect = React.useCallback((tab: TabInfo) => { switch (tab.id) { @@ -100,7 +104,7 @@ export const QueryDetails: React.FunctionComponent = ({
- + diff --git a/esp/src/src-react/components/QuerySummary.tsx b/esp/src/src-react/components/QuerySummary.tsx index 9e9869ddb95..1ce2df2109c 100644 --- a/esp/src/src-react/components/QuerySummary.tsx +++ b/esp/src/src-react/components/QuerySummary.tsx @@ -15,17 +15,20 @@ const logger = scopedLogger("../components/QuerySummary.tsx"); interface QuerySummaryProps { querySet: string; queryId: string; + isSuspended?: boolean; + isActivated?: boolean; } export const QuerySummary: React.FunctionComponent = ({ querySet, - queryId + queryId, + isSuspended = false, + isActivated = false }) => { const [query, setQuery] = React.useState(); - const [wuid, setWuid] = React.useState(""); - const [suspended, setSuspended] = React.useState(false); - const [activated, setActivated] = React.useState(false); + const [suspended, setSuspended] = React.useState(isSuspended); + const [activated, setActivated] = React.useState(isActivated); const [DeleteConfirm, setShowDeleteConfirm] = useConfirm({ title: nlsHPCC.Delete, @@ -57,12 +60,9 @@ export const QuerySummary: React.FunctionComponent = ({ }, [queryId, querySet]); React.useEffect(() => { - query?.getDetails().then(({ WUQueryDetailsResponse }) => { - setWuid(query?.Wuid); - setSuspended(query.Suspended); - setActivated(query.Activated); - }); - }, [query]); + setActivated(isActivated); + setSuspended(isSuspended); + }, [isActivated, isSuspended]); const buttons = React.useMemo((): ICommandBarItemProps[] => [ { @@ -73,7 +73,7 @@ export const QuerySummary: React.FunctionComponent = ({ { key: "save", text: nlsHPCC.Save, iconProps: { iconName: "Save" }, disabled: !canSave, onClick: () => { - const selection = [{ QuerySetId: querySet, Id: queryId }]; + const selection = [{ QuerySetId: querySet, Id: queryId, Name: query?.QueryName }]; const actions = []; if (suspended !== query?.Suspended) { actions.push(WsWorkunits.WUQuerysetQueryAction(selection, suspended ? "Suspend" : "Unsuspend")); @@ -125,7 +125,7 @@ export const QuerySummary: React.FunctionComponent = ({ }} /> {nlsHPCC.Workunit} {nlsHPCC.Other} diff --git a/esp/src/src/Session.ts b/esp/src/src/Session.ts index 281742e4b13..f7a43044e3d 100644 --- a/esp/src/src/Session.ts +++ b/esp/src/src/Session.ts @@ -6,7 +6,7 @@ import { SMCService } from "@hpcc-js/comms"; import { scopedLogger } from "@hpcc-js/util"; import { cookieKeyValStore, sessionKeyValStore, userKeyValStore } from "src/KeyValStore"; import { singletonDebounce } from "../src-react/util/throttle"; -import { parseSearch } from "../src-react/util/history"; +import { parseSearch, replaceUrl } from "../src-react/util/history"; import { ModernMode } from "./BuildInfo"; import * as ESPUtil from "./ESPUtil"; @@ -135,6 +135,11 @@ export function formatCost(value): string { export function initSession() { if (sessionIsActive > -1) { + const redirectUrl = window.localStorage.getItem("redirectAfterLogin") ?? ""; + if (redirectUrl) { + window.localStorage.removeItem("redirectAfterLogin"); + replaceUrl(redirectUrl); + } idleWatcher.on("active", function () { resetESPTime(); }); diff --git a/esp/src/src/nls/hpcc.ts b/esp/src/src/nls/hpcc.ts index 360ba2801c2..d864130fb48 100644 --- a/esp/src/src/nls/hpcc.ts +++ b/esp/src/src/nls/hpcc.ts @@ -936,6 +936,7 @@ export = { Statistics: "Statistics", SVGSource: "SVG Source", SyncSelection: "Sync To Selection", + Syntax: "Syntax", SystemServers: "System Servers", tag: "tag", Target: "Target", diff --git a/system/jlib/jsocket.cpp b/system/jlib/jsocket.cpp index 4142a6bd125..5ecd2369205 100644 --- a/system/jlib/jsocket.cpp +++ b/system/jlib/jsocket.cpp @@ -363,9 +363,6 @@ struct xfd_set { __fd_mask fds_bits[XFD_SETSIZE / __NFDBITS]; }; // define our o #define T_SOCKET int #define SEND_FLAGS (MSG_NOSIGNAL) #endif -#ifdef CENTRAL_NODE_RANDOM_DELAY -static SocketEndpointArray CentralNodeArray; -#endif enum SOCKETMODE { sm_tcp_server, sm_tcp, sm_udp_server, sm_udp, sm_multicast_server, sm_multicast}; #define BADSOCKERR(err) ((err==JSE_BADF)||(err==JSE_NOTSOCK)) @@ -1538,20 +1535,8 @@ void CSocket::connect_wait(unsigned timems) bool exit = false; int err; unsigned refuseddelay = 1; - while (!exit) { -#ifdef CENTRAL_NODE_RANDOM_DELAY - ForEachItemIn(cn,CentralNodeArray) { - const SocketEndpoint &ep=CentralNodeArray.item(cn); - if (ep.ipequals(targetip)) { - unsigned sleeptime = getRandom() % 1000; - StringBuffer s; - ep.getHostText(s); - DBGLOG("Connection to central node %s - sleeping %d milliseconds", s.str(), sleeptime); - Sleep(sleeptime); - break; - } - } -#endif + while (!exit) + { unsigned remaining; exit = tm.timedout(&remaining); bool blockselect = exit; // if last time round block @@ -6051,15 +6036,6 @@ ISocketBufferReader *createSocketBufferReader(const char *trc) } -extern jlib_decl void markNodeCentral(SocketEndpoint &ep) -{ -#ifdef CENTRAL_NODE_RANDOM_DELAY - CriticalBlock block(CSocket::crit); - CentralNodeArray.append(ep); -#endif -} - - static CSocket *prepareSocket(unsigned idx,const SocketEndpoint &ep, ISocketConnectNotify &inotify) { Owned sock = new CSocket(ep,sm_tcp,NULL); diff --git a/system/jlib/jsocket.hpp b/system/jlib/jsocket.hpp index bf91c86a3b7..8b82a1d9d8e 100644 --- a/system/jlib/jsocket.hpp +++ b/system/jlib/jsocket.hpp @@ -76,7 +76,6 @@ enum JSOCKET_ERROR_CODES { #ifndef _WIN32 #define BLOCK_POLLED_SINGLE_CONNECTS // NB this is much slower in windows -#define CENTRAL_NODE_RANDOM_DELAY #else #define USERECVSEM // to singlethread BF_SYNC_TRANSFER_PUSH #endif @@ -637,8 +636,6 @@ interface ISocketBufferReader: extends IInterface extern jlib_decl ISocketBufferReader *createSocketBufferReader(const char *trc=NULL); -extern jlib_decl void markNodeCentral(SocketEndpoint &ep); // random delay for linux - interface ISocketConnectNotify { public: diff --git a/system/mp/mpcomm.cpp b/system/mp/mpcomm.cpp index f4d7e9f1281..8d9f59ac2cc 100644 --- a/system/mp/mpcomm.cpp +++ b/system/mp/mpcomm.cpp @@ -2165,6 +2165,11 @@ CMPConnectThread::CMPConnectThread(CMPServer *_parent, unsigned port, bool _list parent->mpTraceLevel = getComponentConfigSP()->getPropInt("logging/@detail", InfoMsgThreshold); if (listen) { + if (getComponentConfigSP()->hasProp("expert/@mpSoMaxConn")) + mpSoMaxConn = getComponentConfigSP()->getPropInt("expert/@mpSoMaxConn"); + else + mpSoMaxConn = getGlobalConfigSP()->getPropInt("expert/@mpSoMaxConn", 0); + if (getComponentConfigSP()->hasProp("expert/@acceptThreadPoolSize")) acceptThreadPoolSize = getComponentConfigSP()->getPropInt("expert/@acceptThreadPoolSize"); else diff --git a/thorlcr/graph/thgraphslave.cpp b/thorlcr/graph/thgraphslave.cpp index 3974042bc12..14c8d7ea6d0 100644 --- a/thorlcr/graph/thgraphslave.cpp +++ b/thorlcr/graph/thgraphslave.cpp @@ -1255,6 +1255,8 @@ void CSlaveGraph::executeSubGraph(size32_t parentExtractSz, const byte *parentEx void CSlaveGraph::abort(IException *e) { + if (aborted) + return; if (!graphDone) // set pre done(), no need to abort if got that far. CGraphBase::abort(e); getDoneSem.signal(); @@ -1262,23 +1264,27 @@ void CSlaveGraph::abort(IException *e) void CSlaveGraph::done() { - GraphPrintLog("End of sub-graph"); - progressActive.store(false); - setProgressUpdated(); // NB: ensure collected after end of graph - if (!queryOwner() || isGlobal()) + if (started) { - if (aborted || !graphDone) + GraphPrintLog("End of sub-graph"); + progressActive.store(false); + setProgressUpdated(); // NB: ensure collected after end of graph + + if (initialized && (!queryOwner() || isGlobal())) { - if (!getDoneSem.wait(SHORTTIMEOUT)) // wait on master to clear up, gather info from slaves - WARNLOG("CSlaveGraph::done - timedout waiting for master to signal done()"); + if (aborted || !graphDone) + { + if (!getDoneSem.wait(SHORTTIMEOUT)) // wait on master to clear up, gather info from slaves + WARNLOG("CSlaveGraph::done - timedout waiting for master to signal done()"); + } + else + getDoneSem.wait(); + } + if (!queryOwner()) + { + if (globals->getPropBool("@watchdogProgressEnabled")) + jobS->queryProgressHandler()->stopGraph(*this, NULL); } - else - getDoneSem.wait(); - } - if (!queryOwner()) - { - if (globals->getPropBool("@watchdogProgressEnabled")) - jobS->queryProgressHandler()->stopGraph(*this, NULL); } Owned exception; diff --git a/thorlcr/slave/thslavemain.cpp b/thorlcr/slave/thslavemain.cpp index 2d2e43de2fb..c1fa682a57c 100644 --- a/thorlcr/slave/thslavemain.cpp +++ b/thorlcr/slave/thslavemain.cpp @@ -436,7 +436,6 @@ int main( int argc, const char *argv[] ) SocketEndpoint masterEp(master); localHostToNIC(masterEp); setMasterPortBase(masterEp.port); - markNodeCentral(masterEp); if (RegisterSelf(masterEp)) {