As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Amazon EMR versão 5.22.0
Versões 5.22.0 da aplicação
Os seguintes aplicativos são compatíveis com esta versão: Flink
A tabela abaixo lista as versões do aplicativo disponíveis nesta versão da Amazon EMR e as versões do aplicativo nas três EMR versões anteriores da Amazon (quando aplicável).
Para obter um histórico abrangente das versões do aplicativo para cada lançamento da AmazonEMR, consulte os seguintes tópicos:
emr-5.22.0 | emr-5.21.2 | emr-5.21.1 | emr-5.21.0 | |
---|---|---|---|---|
AWS SDK para Java | 1.11.510 | 1.11.479 | 1.11.479 | 1.11.479 |
Python | 2.7, 3.6 | 2.7, 3.6 | 2.7, 3.6 | 2.7, 3.6 |
Scala | 2.11.12 | 2.11.12 | 2.11.12 | 2.11.12 |
AmazonCloudWatchAgent | - | - | - | - |
Delta | - | - | - | - |
Flink | 1.7.1 | 1.7.0 | 1.7.0 | 1.7.0 |
Ganglia | 3.7.2 | 3.7.2 | 3.7.2 | 3.7.2 |
HBase | 1.4.9 | 1.4.8 | 1.4.8 | 1.4.8 |
HCatalog | 2.3.4 | 2.3.4 | 2.3.4 | 2.3.4 |
Hadoop | 2.8.5 | 2.8.5 | 2.8.5 | 2.8.5 |
Hive | 2.3.4 | 2.3.4 | 2.3.4 | 2.3.4 |
Hudi | - | - | - | - |
Hue | 4.3.0 | 4.3.0 | 4.3.0 | 4.3.0 |
Iceberg | - | - | - | - |
JupyterEnterpriseGateway | - | - | - | - |
JupyterHub | 0.9.4 | 0.9.4 | 0.9.4 | 0.9.4 |
Livy | 0.5.0 | 0.5.0 | 0.5.0 | 0.5.0 |
MXNet | 1.3.1 | 1.3.1 | 1.3.1 | 1.3.1 |
Mahout | 0.13.0 | 0.13.0 | 0.13.0 | 0.13.0 |
Oozie | 5.1.0 | 5.0.0 | 5.0.0 | 5.0.0 |
Phoenix | 4.14.1 | 4.14.0 | 4.14.0 | 4.14.0 |
Pig | 0.17.0 | 0.17.0 | 0.17.0 | 0.17.0 |
Presto | 0.215 | 0.215 | 0.215 | 0.215 |
Spark | 2.4.0 | 2.4.0 | 2.4.0 | 2.4.0 |
Sqoop | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 |
TensorFlow | 1.12.0 | 1.12.0 | 1.12.0 | 1.12.0 |
Tez | 0.9.1 | 0.9.1 | 0.9.1 | 0.9.1 |
Trino (Em breve) SQL | - | - | - | - |
Zeppelin | 0.8.1 | 0.8.0 | 0.8.0 | 0.8.0 |
ZooKeeper | 3.4.13 | 3.4.13 | 3.4.13 | 3.4.13 |
Notas da versão 5.22.0
As notas de lançamento a seguir incluem informações sobre a EMR versão 5.22.0 da Amazon. As alterações são referentes à versão 5.21.0.
Importante
A partir da EMR versão 5.22.0 da Amazon, a Amazon EMR usa o AWS Signature versão 4 exclusivamente para autenticar solicitações para o Amazon S3. As EMR versões anteriores da Amazon usam a AWS Signature Version 2 em alguns casos, a menos que as notas de lançamento indiquem que a Signature Version 4 é usada exclusivamente. Para obter mais informações, consulte Autenticação de solicitações (AWS assinatura versão 4) e Solicitações de autenticação (AWS assinatura versão 2) no Guia do desenvolvedor do Amazon Simple Storage Service.
Data da versão inicial: 20 de março de 2019
Atualizações
Flink 1.7.1
HBase1.4.9
Oozie 5.1.0
Phoenix 4.14.1
Zeppelin 0.8.1
-
Conectores e drivers:
Conector do DynamoDB 4.8.0
Conector do MariaDB 2.2.6
Driver Amazon Redshift 1.2.20.1043 JDBC
Novos atributos
Modificou a EBS configuração padrão para tipos de EC2 instância com armazenamento EBS somente. Quando você cria um cluster usando a EMR versão 5.22.0 e posterior da Amazon, a quantidade padrão de EBS armazenamento aumenta com base no tamanho da instância. Além disso, dividimos o aumento do armazenamento em vários volumes, proporcionando maior IOPS desempenho. Se quiser usar uma configuração de armazenamento de EBS instância diferente, você pode especificá-la ao criar um EMR cluster ou adicionar nós a um cluster existente. Para obter mais informações sobre a quantidade de armazenamento e o número de volumes alocados por padrão para cada tipo de instância, consulte EBSArmazenamento padrão para instâncias no Amazon EMR Management Guide.
Alterações, melhorias e problemas resolvidos
Spark
Introduziu uma nova propriedade de configuração para o Spark emYARN,
spark.yarn.executor.memoryOverheadFactor
. O valor dessa propriedade é um fator de escala que define o valor da sobrecarga de memória como uma porcentagem da memória do executor, com um mínimo de 384 MB. Se a sobrecarga de memória for definida explicitamente usandospark.yarn.executor.memoryOverhead
, essa propriedade não terá efeito. O valor padrão é0.1875
, representando 18,75%. Esse padrão para a Amazon EMR deixa mais espaço nos YARN contêineres para sobrecarga de memória do executor do que o padrão de 10% definido internamente pelo Spark. O EMR padrão da Amazon de 18,75% mostrou empiricamente menos falhas relacionadas à memória nos benchmarks -DS. TPCBackport SPARK-26316
para melhorar o desempenho.
Nas EMR versões 5.19.0, 5.20.0 e 5.21.0 da Amazon, os rótulos dos YARN nós são armazenados em um diretório. HDFS Em algumas situações, isso leva a atrasos na inicialização do nó central causando, em seguida, tempo limite do cluster e falha na inicialização. A partir do Amazon EMR 5.22.0, esse problema foi resolvido. YARNos rótulos dos nós são armazenados no disco local de cada nó do cluster, evitando dependências emHDFS.
Problemas conhecidos
-
Hue (corrigido na EMR versão 5.24.0 da Amazon)
-
O Hue executado na Amazon EMR não oferece suporte ao Solr. A partir da EMR versão 5.20.0 da Amazon, um problema de configuração incorreta faz com que o Solr seja ativado e uma mensagem de erro inofensiva apareça semelhante à seguinte:
Solr server could not be contacted properly: HTTPConnectionPool('host=ip-xx-xx-xx-xx.ec2.internal', port=1978): Max retries exceeded with url: /solr/admin/info/system?user.name=hue&doAs=administrator&wt=json (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))
Para evitar que a mensagem de erro do Solr seja exibida:
Conecte-se à linha de comando do nó primário usando SSH o.
Use um editor de texto para abrir o arquivo
hue.ini
. Por exemplo:sudo vim /etc/hue/conf/hue.ini
Pesquise o termo
appblacklist
e modifique a linha para o seguinte:appblacklist = search
Salve as alterações e reinicie o Hue, conforme mostrado no exemplo a seguir:
sudo stop hue; sudo start hue
-
-
Problema conhecido em clusters com vários nós primários e autenticação Kerberos
Se você executar clusters com vários nós primários e autenticação Kerberos nas EMR versões 5.20.0 e posteriores da Amazon, poderá encontrar problemas com operações de cluster, como redução de escala ou envio de etapas, depois que o cluster estiver em execução por algum tempo. O período depende do período de validade do tíquete do Kerberos que você definiu. O problema de redução da escala verticalmente afeta tanto as solicitações de redução automática quanto as de reduções explícitas que você enviou. Operações adicionais de cluster também podem ser afetadas.
Solução:
-
SSHcomo
hadoop
usuário do nó primário principal do EMR cluster com vários nós primários. -
Execute o comando a seguir para renovar o tíquete do Kerberos para o usuário do
hadoop
.kinit -kt <keytab_file> <principal>
Normalmente, o arquivo keytab está localizado em
/etc/hadoop.keytab
e a entidade principal está na forma dehadoop/<hostname>@<REALM>
.
nota
Essa solução alternativa entrará em vigor durante o período de validade do tíquete do Kerberos. Essa duração é de 10 horas por padrão, mas pode ser configurada pelas definições do Kerberos. Você deve executar novamente o comando acima quando o tíquete do Kerberos expirar.
-
Versões de componente 5.22.0
Os componentes que a Amazon EMR instala com esta versão estão listados abaixo. Alguns são instalados como parte de pacotes de aplicativos de big data. Outros são exclusivos da Amazon EMR e são instalados para processos e recursos do sistema. Eles normalmente começam com emr
ou aws
. Os pacotes de aplicativos de big data na versão mais recente da Amazon EMR geralmente são a versão mais recente encontrada na comunidade. Disponibilizamos lançamentos comunitários na Amazon o mais EMR rápido possível.
Alguns componentes na Amazon EMR diferem das versões da comunidade. Esses componentes tem um rótulo de versão no formulário
. O CommunityVersion
-amzn-EmrVersion
começa em 0. Por exemplo, se um componente de comunidade de código aberto nomeado EmrVersion
myapp-component
com a versão 2.2 tiver sido modificado três vezes para inclusão em diferentes EMR versões da Amazon, sua versão de lançamento será listada como2.2-amzn-2
.
Componente | Versão | Descrição |
---|---|---|
aws-sagemaker-spark-sdk | 1.2.1 | Amazon SageMaker Spark SDK |
emr-ddb | 4.8.0 | O conector do Amazon DynamoDB para aplicativos do ecossistema do Hadoop. |
emr-goodies | 2.6.0 | Bibliotecas convenientes para o ecossistema do Hadoop. |
emr-kinesis | 3.4.0 | O conector do Amazon Kinesis para aplicativos do ecossistema do Hadoop. |
emr-s3-dist-cp | 2.11.0 | Cópia distribuída otimizada de aplicativos para o Amazon S3. |
emr-s3-select | 1.2.0 | EMRConector S3Select |
emrfs | 2.31.0 | O conector do Amazon S3 para aplicações do ecossistema do Hadoop. |
flink-client | 1.7.1 | Scripts do cliente da linha de comando e aplicativos do Apache Flink. |
ganglia-monitor | 3.7.2 | O agente incorporado do Ganglia para aplicativos do ecossistema do Hadoop, juntamente com o agente de monitoramento do Ganglia. |
ganglia-metadata-collector | 3.7.2 | O coletor de metadados do Ganglia para agregar métricas de agentes de monitoramento do Ganglia. |
ganglia-web | 3.7.1 | O aplicativo web para visualizar as métricas coletadas pelo coletor de metadados do Ganglia. |
hadoop-client | 2.8.5-amzn-2 | Clientes da linha de comando do Hadoop, como 'hdfs', 'hadoop', ou 'yarn'. |
hadoop-hdfs-datanode | 2.8.5-amzn-2 | HDFSserviço em nível de nó para armazenar blocos. |
hadoop-hdfs-library | 2.8.5-amzn-2 | HDFScliente e biblioteca de linha de comando |
hadoop-hdfs-namenode | 2.8.5-amzn-2 | HDFSserviço para rastrear nomes de arquivos e localizações de blocos. |
hadoop-httpfs-server | 2.8.5-amzn-2 | HTTPendpoint para HDFS operações. |
hadoop-kms-server | 2.8.5-amzn-2 | Servidor de gerenciamento de chaves criptográficas baseado no Hadoop. KeyProvider API |
hadoop-mapred | 2.8.5-amzn-2 | MapReduce bibliotecas de mecanismos de execução para executar um MapReduce aplicativo. |
hadoop-yarn-nodemanager | 2.8.5-amzn-2 | YARNserviço para gerenciar contêineres em um nó individual. |
hadoop-yarn-resourcemanager | 2.8.5-amzn-2 | YARNserviço para alocar e gerenciar recursos de cluster e aplicativos distribuídos. |
hadoop-yarn-timeline-server | 2.8.5-amzn-2 | Serviço para recuperar informações atuais e históricas para YARN aplicativos. |
hbase-hmaster | 1.4.9 | Serviço para um HBase cluster responsável pela coordenação das regiões e execução de comandos administrativos. |
hbase-region-server | 1.4.9 | Serviço para atender uma ou mais HBase regiões. |
hbase-client | 1.4.9 | HBasecliente de linha de comando. |
hbase-rest-server | 1.4.9 | Serviço que fornece um RESTful HTTP endpoint paraHBase. |
hbase-thrift-server | 1.4.9 | Serviço que fornece um endpoint Thrift para. HBase |
hcatalog-client | 2.3.4-amzn-1 | O cliente da linha de comando 'hcat' para manipular o hcatalog-server. |
hcatalog-server | 2.3.4-amzn-1 | Fornecimento de serviçosHCatalog, uma camada de gerenciamento de tabelas e armazenamento para aplicativos distribuídos. |
hcatalog-webhcat-server | 2.3.4-amzn-1 | HTTPendpoint fornecendo uma REST interface paraHCatalog. |
hive-client | 2.3.4-amzn-1 | O cliente da linha de comando do Hive. |
hive-hbase | 2.3.4-amzn-1 | Cliente do Hive-hbase. |
hive-metastore-server | 2.3.4-amzn-1 | Serviço para acessar o metastore Hive, um repositório semântico que armazena metadados para operações no Hadoop. SQL |
hive-server2 | 2.3.4-amzn-1 | O serviço que aceita as consultas do Hive como solicitações da web. |
hue-server | 4.3.0 | O aplicativo web para analisar dados usando aplicativos do ecossistema do Hadoop |
jupyterhub | 0.9.4 | Servidor de vários usuários para blocos de anotações Jupyter |
livy-server | 0.5.0-incubating | RESTinterface para interagir com o Apache Spark |
nginx | 1.12.1 | nginx [engine x] é HTTP um servidor proxy reverso |
mahout-client | 0.13.0 | A biblioteca de Machine Learning. |
mxnet | 1.3.1 | Uma biblioteca flexível, escalável e eficiente para aprendizado aprofundado. |
mysql-server | 5.5.54+ | Meu servidor SQL de banco de dados. |
nvidia-cuda | 9.2.88 | Drivers NVIDIA e toolkit CUDA |
oozie-client | 5.1.0 | O cliente da linha de comando do Oozie. |
oozie-server | 5.1.0 | O serviço que aceita solicitações de fluxo de trabalho do Oozie. |
opencv | 3.4.0 | Biblioteca de Visão Computacional de Código Aberto. |
phoenix-library | 4.14.1- -1,4 HBase | As bibliotecas do phoenix para servidor e cliente |
phoenix-query-server | 4.14.1- -1,4 HBase | Um servidor leve que fornece JDBC acesso, buffers de protocolo e acesso ao JSON formato do Avatica API |
presto-coordinator | 0.215 | O serviço que aceita consultas e gerencia a execução de consultas entre os presto-workers. |
presto-worker | 0.215 | O serviço que executa partes de uma consulta. |
pig-client | 0.17.0 | O cliente da linha de comando do Pig. |
r | 3.4.1 | O projeto R para computação estatística |
spark-client | 2.4.0 | Os clientes da linha de comando do Spark. |
spark-history-server | 2.4.0 | A interface de usuário da web para visualizar os eventos registrados por toda a vida útil de um aplicativo Spark concluído. |
spark-on-yarn | 2.4.0 | Mecanismo de execução na memória paraYARN. |
spark-yarn-slave | 2.4.0 | Bibliotecas do Apache Spark necessárias para escravos. YARN |
sqoop-client | 1.4.7 | O cliente da linha de comando do Apache Sqoop. |
tensorflow | 1.12.0 | TensorFlow biblioteca de software de código aberto para computação numérica de alto desempenho. |
tez-on-yarn | 0.9.1 | O YARN aplicativo e as bibliotecas tez. |
webserver | 2.4.25+ | HTTPServidor Apache. |
zeppelin-server | 0.8.1 | O notebook baseado na web que permite um data analytics interativo. |
zookeeper-server | 3.4.13 | O serviço centralizado de manutenção de informações de configuração, nomenclatura, fornecimento de sincronização distribuída, e fornecimento de serviços de grupo. |
zookeeper-client | 3.4.13 | ZooKeeper cliente de linha de comando. |
Classificações de configuração 5.22.0
As classificações de configuração permitem que você personalize aplicações. Eles geralmente correspondem a um XML arquivo de configuração do aplicativo, comohive-site.xml
. Para obter mais informações, consulte Configurar aplicações.
Classificações | Descrição |
---|---|
capacity-scheduler | Alterar os valores no arquivo capacity-scheduler.xml do Hadoop. |
container-log4j | Altere os valores no arquivo container-log4j.properties YARN do Hadoop. |
core-site | Alterar os valores no arquivo core-site.xml do Hadoop. |
emrfs-site | Altere EMRFS as configurações. |
flink-conf | Alterar as configurações do flink-conf.yaml. |
flink-log4j | Alterar as configurações de log4j.properties no Flink. |
flink-log4j-yarn-session | Altere as configurações do Flink log4 j-yarn-session .properties. |
flink-log4j-cli | Alterar as configurações de log4j-cli.properties no Flink. |
hadoop-env | Alterar os valores no ambiente do Hadoop para todos os componentes do Hadoop. |
hadoop-log4j | Alterar os valores no arquivo log4j.properties do Hadoop. |
hadoop-ssl-server | Alterar a configuração do servidor SSL no Hadoop |
hadoop-ssl-client | Alterar a configuração do cliente SSL no Hadoop |
hbase | Configurações EMR selecionadas pela Amazon para Apache. HBase |
hbase-env | Mude os valores no HBase ambiente. |
hbase-log4j | Altere os valores no arquivo HBase hbase-log4j.properties. |
hbase-metrics | Altere os valores no arquivo HBase hadoop-metrics2-hbase.properties do. |
hbase-policy | Altere os valores no HBase arquivo hbase-policy.xml do. |
hbase-site | Altere os valores no HBase arquivo hbase-site.xml do. |
hdfs-encryption-zones | Configure zonas de HDFS criptografia. |
hdfs-site | Altere os valores em HDFS's hdfs-site.xml. |
hcatalog-env | Mude os valores no HCatalog ambiente. |
hcatalog-server-jndi | Altere os valores em HCatalog jndi.properties. |
hcatalog-server-proto-hive-site | Altere os valores em HCatalog proto-hive-site .xml. |
hcatalog-webhcat-env | Altere os valores no ambiente ebHCat de HCatalog W. |
hcatalog-webhcat-log4j2 | Altere os valores nas propriedades ebHCat log4j2.properties de HCatalog W. |
hcatalog-webhcat-site | Altere os valores no arquivo webhcat-site.xml de HCatalog W. ebHCat |
hive-beeline-log4j2 | Alterar os valores no arquivo beeline-log4j2.properties do Hive. |
hive-parquet-logging | Alterar os valores no arquivo parquet-logging.properties do Hive. |
hive-env | Alterar os valores no ambiente do Hive. |
hive-exec-log4j2 | Altere os valores no arquivo hive-exec-log 4j2.properties do Hive. |
hive-llap-daemon-log4j2 | Altere os valores no arquivo llap-daemon-log 4j2.properties do Hive. |
hive-log4j2 | Alterar os valores no arquivo hive-log4j2.properties do Hive. |
hive-site | Alterar os valores no arquivo hive-site.xml do Hive. |
hiveserver2-site | Alterar os valores no arquivo hiveserver2-site.xml do Hive Server2. |
hue-ini | Alterar os valores no arquivo ini do Hue |
httpfs-env | Mude os valores no HTTPFS ambiente. |
httpfs-site | Alterar os valores no arquivo httpfs-site.xml do Hadoop. |
hadoop-kms-acls | Alterar os valores no arquivo kms-acls.xml do Hadoop. |
hadoop-kms-env | Altere os valores no ambiente HadoopKMS. |
hadoop-kms-log4j | Alterar os valores no arquivo kms-log4j.properties do Hadoop. |
hadoop-kms-site | Alterar os valores no arquivo kms-site.xml do Hadoop. |
jupyter-notebook-conf | Alterar os valores no arquivo jupyter_notebook_config.py do Notebook Jupyter. |
jupyter-hub-conf | Altere os valores no JupyterHubs arquivo jupyterhub_config.py do. |
jupyter-s3-conf | Configurar a persistência do notebook Jupyter S3. |
jupyter-sparkmagic-conf | Altere os valores no arquivo config.json do Sparkmagic. |
livy-conf | Alterar os valores no arquivo livy.conf do Livy. |
livy-env | Alterar os valores no ambiente do Livy. |
livy-log4j | Alterar as configurações de log4j.properties no Livy. |
mapred-env | Altere os valores no ambiente do MapReduce aplicativo. |
mapred-site | Altere os valores no arquivo mapred-site.xml do MapReduce aplicativo. |
oozie-env | Alterar os valores no ambiente do Oozie. |
oozie-log4j | Alterar os valores no arquivo oozie-log4j.properties do Oozie. |
oozie-site | Alterar os valores no arquivo oozie-site.xml do Oozie. |
phoenix-hbase-metrics | Alterar os valores no arquivo hadoop-metrics2-hbase.properties do Phoenix. |
phoenix-hbase-site | Alterar os valores no arquivo hbase-site.xml do Phoenix. |
phoenix-log4j | Alterar os valores no arquivo log4j.properties do Phoenix. |
phoenix-metrics | Alterar os valores no arquivo hadoop-metrics2-phoenix.properties do Phoenix. |
pig-env | Alterar os valores no ambiente do Pig. |
pig-properties | Alterar os valores no arquivo pig.properties do Pig. |
pig-log4j | Alterar os valores no arquivo log4j.properties do Pig. |
presto-log | Alterar os valores no arquivo log.properties do Presto. |
presto-config | Alterar os valores no arquivo config.properties do Presto. |
presto-password-authenticator | Altere os valores no arquivo password-authenticator.properties do Presto. |
presto-env | Altere os valores no arquivo presto-env.sh do Presto. |
presto-node | Altere os valores no arquivo node.properties do Presto. |
presto-connector-blackhole | Alterar os valores no arquivo blackhole.properties do Presto. |
presto-connector-cassandra | Alterar os valores no arquivo cassandra.properties do Presto. |
presto-connector-hive | Alterar os valores no arquivo hive.properties do Presto. |
presto-connector-jmx | Alterar os valores no arquivo jmx.properties do Presto. |
presto-connector-kafka | Alterar os valores no arquivo kafka.properties do Presto. |
presto-connector-localfile | Alterar os valores no arquivo localfile.properties do Presto. |
presto-connector-memory | Alterar os valores no arquivo memory.properties do Presto. |
presto-connector-mongodb | Alterar os valores no arquivo mongodb.properties do Presto. |
presto-connector-mysql | Alterar os valores no arquivo mysql.properties do Presto. |
presto-connector-postgresql | Alterar os valores no arquivo postgresql.properties do Presto. |
presto-connector-raptor | Alterar os valores no arquivo raptor.properties do Presto. |
presto-connector-redis | Alterar os valores no arquivo redis.properties do Presto. |
presto-connector-redshift | Alterar os valores no arquivo de propriedades redshift do Presto. |
presto-connector-tpch | Alterar os valores no arquivo tpch.properties do Presto. |
presto-connector-tpcds | Alterar os valores no arquivo tpcds.properties do Presto. |
spark | Configurações EMR selecionadas pela Amazon para o Apache Spark. |
spark-defaults | Alterar os valores no arquivo spark-defaults.conf do Spark. |
spark-env | Alterar os valores no ambiente do Spark. |
spark-hive-site | Alterar os valores no arquivo hive-site.xml do Spark. |
spark-log4j | Alterar os valores no arquivo log4j.properties do Spark. |
spark-metrics | Alterar os valores no arquivo metrics.properties do Spark. |
sqoop-env | Alterar os valores no ambiente do Sqoop. |
sqoop-oraoop-site | Altere os valores no arquivo oraoop-site.xml OraOop do Sqoop. |
sqoop-site | Alterar os valores no arquivo sqoop-site.xml do Sqoop. |
tez-site | Alterar os valores no arquivo tez-site.xml do Tez. |
yarn-env | Mude os valores no YARN ambiente. |
yarn-site | Altere os valores no YARN arquivo yarn-site.xml do. |
zeppelin-env | Alterar os valores no ambiente do Zeppelin. |
zookeeper-config | Altere os valores no ZooKeeper arquivo zoo.cfg do. |
zookeeper-log4j | Altere os valores no ZooKeeper arquivo log4j.properties. |