Tabla de contenido
1. Lecturas locales de cortocircuito: Lecturas locales de cortocircuito
1.2 El diseño e implementación de la versión anterior.
1.3 Diseño e implementación de versión de seguridad mejorada
1.4 Configuración de lectura local de cortocircuito
1.4.3 Ver registros de Datanode
2. Balanceador de carga de bloques HDFS: Balanceador
2.2 Configuración de la línea de comando
2.3.1 Configuración del carrusel de datos equilibrados
2.3.2 Ejecutar el equilibrador
3. Ecualizador de disco: HDFS Disk Balancer
3.2 Introducción al equilibrador de discos HDFS
3.3 Función de equilibrador de disco HDFS
3.3.1 Informe de difusión de datos
3.3.1.1 Cálculo de la métrica de densidad de datos de volumen (densidad de datos de volumen)
3.3.1.2 Proceso de cálculo de la densidad de datos del nodo
3.4 Habilitar el equilibrador de disco HDFS
3.5 Comandos relacionados con HDFS Disk Balancer
4. Tecnología de codificación de borrado: codificación de borrado
4.1 Antecedentes: 3 desventajas de la estrategia de copia
4.2 Introducción a la codificación de borrado (CE)
4.5 Método de implementación de codificación de borrado
4.5.1 Configuración de clúster y hardware
4.5.2 Configuración de la política de código de borrado
4.5.3 Habilitar Intel ISA-L (Biblioteca de aceleración de almacenamiento inteligente)
4.5.3.2 Compilar e instalar isa-l-2.28.0
4.5.3.3 Comprobar si isa-l está habilitado en Hadoop
1. Lecturas locales de cortocircuito : Lecturas locales de cortocircuito
1.1 Antecedentes
En HDFS , ya sean lecturas locales ( DFSClient y Datanode están en el mismo nodo) o lecturas ( DFSClient y Datanode no están en el mismo nodo), el método de procesamiento subyacente es el mismo y Datanode lee primero los datos , y luego a través de RPC (Basado en TCP ) Pasar datos a DFSClient . Este procesamiento es relativamente simple, pero el rendimiento se verá afectado porque el Datanode necesita realizar una transferencia en el medio.
Especialmente para las lecturas locales , dado que DFSClient y los datos están en la misma máquina, la idea natural es permitir que DFSClient omita Datanode para leer los datos por sí mismo . Las llamadas lecturas de "cortocircuito" omiten el DataNode , lo que permite a los clientes leer el archivo directamente. Obviamente esto sólo funciona si el cliente está en la misma máquina que los datos. Las lecturas de cortocircuito proporcionan importantes mejoras de rendimiento para muchas aplicaciones.
1.2 El diseño e implementación de la versión anterior.
HDFS-2246 En este JIRA, la idea de los ingenieros es que dado que los datos leídos DFSClient y los datos están en la misma máquina, el Datanode leerá la ruta de los datos en el sistema de archivos, dónde comenzar a leer (desplazamiento ) y cuánto leer (longitud) y otra información para decirle a DFSClient , y luego a DFSClient para abrir el archivo y leerlo por sí mismo .
La idea es buena, el problema radica en la compleja configuración y cuestiones de seguridad.
El primero es el problema de configuración, debido a que DFSClient debe abrir el archivo para leer datos por sí solo, por lo que es necesario configurar una lista blanca para definir qué usuarios tienen acceso al directorio de datos de Datanode .
Si se une un nuevo usuario, se debe modificar la lista blanca. Cabe señalar que este es el directorio de datos que permite al cliente acceder al Datanode , lo que significa que cualquier usuario con este permiso puede acceder a otros datos del directorio, lo que genera un agujero de seguridad .
Por lo tanto, esta implementación está en desuso .
1.3 Diseño e implementación de versión de seguridad mejorada
En HDFS-347, se propone una nueva solución para hacer que la lectura de datos locales en cortocircuito sea más segura . En Linux , existe una tecnología llamada Unix Domain Socket . Unix Domain Socket es un método de comunicación entre procesos que permite que dos procesos en la misma máquina se comuniquen en forma de Socket . Otro gran beneficio que aporta es que dos procesos pueden usarlo para transferir descriptores de archivos entre procesos además de los datos ordinarios .
Supongamos que hay dos usuarios A y B en la máquina , A tiene permiso para acceder a un determinado archivo pero B no, y B necesita acceder a este archivo . Con la ayuda de Unix Domain Socket , A puede abrir el archivo para obtener un descriptor de archivo y luego pasar el descriptor de archivo a B , y B puede leer el contenido del archivo incluso si no tiene el permiso correspondiente .
En el escenario HDFS, A es Datanode , B es DFSClient y el archivo a leer es un archivo en el directorio de datos de Datanode .
1.4 Configuración de lectura local de cortocircuito
1.4.1 libhadoop.so
Debido a que Java no puede operar directamente el socket de dominio Unix , es necesario instalar el paquete nativo libhadoop.so de Hadoop . Se puede obtener compilando el módulo nativo al compilar el código fuente de Hadoop . Puede utilizar el siguiente comando para comprobar si el paquete nativo está instalado .
1.4.2 sitio-hdfs.xml
[root@hadoop01 ~]# vim /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
- dfs.client.read.shortcircuit es un interruptor para habilitar la función de lectura local de cortocircuito .
- dfs.domain.socket.path es la ruta local del Socket comunicado entre Dtanode y DFSClient .
También asegúrese de que la ruta local del Socket se haya creado de antemano (es necesario crear cada nodo del clúster):
[root@hadoop01 ~]# mkdir -p /var/lib/hadoop-hdfs
Nota: La carpeta hadoop -hdfs se crea aquí , y el dn_socket en la configuración anterior lo crea el propio datanode , no una carpeta.
Finalmente, envíe el archivo de configuración a otros nodos y reinicie el clúster HDFS.
1.4.3 Ver registros de Datanode
En el registro de inicio de Datanode , los siguientes registros relacionados muestran que Unix Domain Socket está habilitado y confirman que la configuración surte efecto.
[root@hadoop01 ~]# cd /bigdata/hadoop/server/hadoop-3.2.4/logs/
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/logs]# tail -100 hadoop-root-datanode-hadoop01.log
2. Balanceador de carga de bloques HDFS : Balanceador
2.1 Antecedentes
Es posible que los datos HDFS no siempre se distribuyan uniformemente entre los DataNodes. Una causa común es agregar nuevos DataNodes a un clúster existente . HDFS proporciona un programa Balancer que analiza la información de ubicación de bloques y equilibra los datos entre DataNodes hasta que se consideran equilibrados .
El llamado equilibrio significa que la diferencia entre la tasa de utilización de cada DataNode ( la relación entre el espacio utilizado de la máquina y la capacidad total de la máquina ) y la tasa de utilización del clúster ( la relación entre el espacio utilizado total de HDFS a la capacidad total del clúster HDFS ) no excede el porcentaje de umbral dado . Un equilibrador no puede equilibrar volúmenes individuales (discos) en un único DataNode .
2.2 Configuración de la línea de comando
[root@hadoop01 ~]# hdfs balancer --help
Usage: hdfs balancer
[-policy <policy>] the balancing policy: datanode or blockpool
[-threshold <threshold>] Percentage of disk capacity
[-exclude [-f <hosts-file> | <comma-separated list of hosts>]] Excludes the specified datanodes.
[-include [-f <hosts-file> | <comma-separated list of hosts>]] Includes only the specified datanodes.
[-source [-f <hosts-file> | <comma-separated list of hosts>]] Pick only the specified datanodes as source nodes.
[-blockpools <comma-separated list of blockpool ids>] The balancer will only run on blockpools included in this list.
[-idleiterations <idleiterations>] Number of consecutive idle iterations (-1 for Infinite) before exit.
[-runDuringUpgrade] Whether to run the balancer during an ongoing HDFS upgrade.This is usually not desired since it will not affect used space on over-utilized machines.
-
-threshold 10 La condición del equilibrio del clúster , el umbral de la diferencia de uso del disco entre los nodos de datos , selección de intervalo : 0 ~ 100
-
-política Política de equilibrio del nodo de datos , el valor predeterminado es el nodo de datos. Si el nodo de datos está equilibrado , el clúster está equilibrado .
-
-exclude -f /tmp/ip1.txt está vacío de forma predeterminada , especifica que esta parte de ip no participa en el equilibrio y -f especifica que la entrada es un archivo
-
-include -f /tmp/ip2.txt está vacío de forma predeterminada , solo permite que esta parte de ip participe en el equilibrio, -f especifica la entrada como un archivo
-
-idleiteraciones 5 iteraciones 5
2.3 Cómo ejecutar Balancer
2.3.1 Configuración de una cinta de transferencia de datos equilibrada
hdfs dfsadmin -setBalancerBandwidth newbandwidth
donde nuevo ancho de banda es la cantidad máxima de ancho de banda de red que cada DataNode puede usar durante una operación de equilibrio, en bytes por segundo .
Por ejemplo: hdfs dfsadmin - setBalancerBandwidth 104857600 ( 100M )
2.3.2 ejecutar balanceador
Ejecutar con parámetros predeterminados: hdfs balancer
Especifique el umbral a ejecutar: hdfs balancer -threshold 5 El balanceador se ejecutará al 5 % del umbral ( predeterminado 10% ) .
Esto significa que el programa garantizará que el uso del disco en cada DataNode no difiera en más del 5 % del uso general en el clúster . Por ejemplo, si el uso agregado de todos los DataNodes en el clúster es el 40 % de la capacidad total de almacenamiento en disco del clúster , el programa garantizará que el uso del disco de cada DataNode esté entre el 35 % y el 45 % de la capacidad de almacenamiento en disco de ese DataNode . .
3. Equilibrador de disco: Equilibrador de disco HDFS
3.1 Antecedentes
En comparación con las PC personales, los servidores generalmente pueden ampliar la capacidad de almacenamiento de una sola máquina montando varios discos. En Hadoop HDFS , DataNode es responsable del almacenamiento del bloque de datos final y distribuye los bloques de datos entre los discos de la máquina host. Al escribir un nuevo bloque , DataNodes elegirá el disco (volumen) del bloque de acuerdo con la política de selección ( política de operación por turnos o política de espacio libre ) .
- Estrategia de round robin : distribuye nuevos bloques de manera uniforme entre los discos disponibles. Esta política es la predeterminada.
- Política de espacio libre : esta política escribe datos en los discos que tienen más espacio libre (por porcentaje).
Pero con una estrategia de operación por turnos en un clúster de larga duración , los DataNodes a veces llenan sus directorios de almacenamiento (discos / volúmenes) de manera desigual , lo que lleva a situaciones en las que algunos discos están llenos y otros rara vez se usan. Esto puede suceder debido a operaciones intensas de escritura y eliminación, o debido a un reemplazo de disco.
Además, si utilizamos una estrategia de selección basada en el espacio libre , cada nueva escritura irá al disco vacío recién agregado, dejando otros discos libres durante ese período. Esto creará un cuello de botella en el nuevo disco . Por lo tanto, se necesita un equilibrio intra-DataNode ( distribución uniforme de bloques de datos dentro de un DataNode ) para abordar el sesgo intra-DataNode (distribución desigual de bloques en el disco), que se produce debido al reemplazo del disco o a escrituras y eliminaciones aleatorias.
Por lo tanto, en Hadoop 3.0 se introdujo una herramienta llamada Disk Balancer , que se enfoca en distribuir datos dentro de DataNodes .
3.2 Introducción al equilibrador de discos HDFS
El equilibrador de disco HDFS es una herramienta de línea de comandos introducida en Hadoop 3 , que se utiliza para equilibrar la distribución desigual de datos en DataNodes entre discos . Preste especial atención aquí, el equilibrador de disco HDFS es diferente de HDFS Balancer :
- El equilibrador de disco HDFS opera en un DataNode determinado y mueve bloques de un disco a otro , que son los datos internos del DataNode que se equilibran entre diferentes discos;
- HDFS Balancer equilibra la distribución entre los nodos DataNode .
3.3 Función de equilibrador de disco HDFS
3.3.1 Informe de difusión de datos
Para medir qué computadoras en el clúster sufren una distribución desigual de los datos , Disk Balancer define la métrica de densidad de datos de volumen ( métrica de densidad de datos de volumen / disco) y la métrica de densidad de datos de nodo (métrica de densidad de datos de nodo) .
- Densidad de datos de volumen (disco): compare la distribución de datos en diferentes volúmenes en la misma máquina .
- Densidad de datos del nodo : la comparación se realiza entre diferentes máquinas.
3.3.1.1 Cálculo de la métrica de densidad de datos de volumen (densidad de datos de volumen)
Un valor positivo para la densidad de datos del volumen indica que el disco está subutilizado , mientras que un valor negativo indica que el disco está sobreutilizado .
Suponiendo una computadora con cuatro volúmenes / discos : Disco1 , Disco2 , Disco3 , Disco4 , uso de disco individual:
Capacidad total = 200 + 300 + 350 + 500 = 1350 GB
Total utilizado = 100 + 76 + 300 + 475 = 951 GB
Entonces, el almacenamiento ideal en cada volumen / disco sería :
Almacenamiento ideal = Total utilizado ÷ Capacidad total = 951÷1350 = 0,70
Es decir, cada disco debe mantenerse al 70 % de la capacidad de almacenamiento ideal.
Densidad de datos de volumen = Almacenamiento ideal – Proporción utilizada de dfs
Por ejemplo, la densidad de datos del volumen de Disk1 = 0,70 - 0,50 = 0,20 . Otros y así sucesivamente .
3.3.1.2 Proceso de cálculo de la densidad de datos del nodo
Densidad de datos del nodo (densidad de datos del nodo) = la suma del valor absoluto de la densidad de datos de todos los volúmenes de densidad de datos (discos ) en el nodo .
Densidad de datos de nodo en el ejemplo anterior =|0,20|+|0,45|+|-0,15|+|-0,24| =1,04
Un valor de densidad de datos del nodo más bajo indica que el nodo de la máquina tiene una mejor escalabilidad, mientras que un valor más alto indica que el nodo tiene una distribución de datos más sesgada.
Una vez que tenga el volumen Data Density y el nodo Data Density , puede encontrar los nodos donde la distribución de datos en el clúster está sesgada y los discos donde los datos están sesgados paso a paso en la máquina.
3.3.2 Equilibrio de disco
Cuando se designa un nodo DataNode para el equilibrio de datos del disco , primero se puede calcular o leer la densidad de datos del volumen actual ( densidad de datos del volumen del disco ) . Con esta información, podemos determinar fácilmente qué volúmenes están sobreaprovisionados y cuáles están insuficientemente aprovisionados .
Para mover datos de un volumen a otro en DataNode , el desarrollo de Hadoop implementa Disk Balancer basado en el protocolo RPC .
3.4 Abrir el equilibrador de disco HDFS
HDFS Disk Balancer funciona creando un plan, que es un conjunto de declaraciones que describen cuántos datos se deben mover entre dos discos y luego ejecutando ese conjunto de declaraciones en los DataNodes. El plan contiene múltiples pasos en movimiento. Cada paso de movimiento en el plan tiene el disco de destino, la dirección del disco de origen. El paso de movimiento también tiene la cantidad de bytes a mover. El plan se ejecuta contra DataNodes operativos .
De forma predeterminada, la función Disk Balancer está habilitada en los clústeres de Hadoop . Al ajustar el valor del parámetro dfs.disk.balancer.enabled en hdfs-site.xml , elija si desea habilitar el equilibrador de disco en Hadoop .
3.5 Comandos relacionados con HDFS Disk Balancer
3.5.1 planificar planificar
Comando: hdfs diskbalancer -plan <nodo de datos>
-
-out controla la ubicación de salida del archivo del plan
-
-bandwidth establece el ancho de banda máximo para ejecutar Disk Balancer , el ancho de banda predeterminado es 10 MB/s.
-
-thresholdPercentage define el valor en el que el disco comienza a participar en operaciones de redistribución o equilibrio de datos . El valor predeterminado de porcentaje de umbral es 10 %, lo que significa que el disco sólo se utiliza para operaciones de equilibrio si contiene un 10 % o menos de datos de los almacenados idealmente .
-
-maxerror que permite al usuario especificar el número de errores a ignorar para una operación de movimiento entre dos discos antes de cancelar el paso de movimiento .
-
-v Modo detallado .
-
-fs Esta opción especifica el NameNode que se utilizará . Si no se especifica, Disk Balancer utilizará el NameNode predeterminado de la configuración .
3.5.2 Ejecutar _
Ejemplo: hdfs diskbalancer -ejecutar <ruta del archivo JSON>
El comando de ejecución ejecuta el plan contra el DataNode para el cual se generó el plan.
3.5.3 Consulta de consulta
Comando: hdfs diskbalancer -query <nodo de datos>
El comando de consulta obtiene el estado actual del equilibrador de disco HDFS del DataNode que ejecuta la programación.
3.5.4 Cancelar _
Instrucción: hdfs diskbalancer -cancel <ruta del archivo JSON>
hdfs diskbalancer - cancelar el nodo ID del plan <nombre de nodo>
El comando cancelar cancela un plan de ejecución.
3.5.5 Informe _
Comando: hdfs diskbalancer -fs hdfs://nn_host:8020 -report
4. Tecnología de codificación de borrado: codificación de borrado
4.1 Antecedentes: 3 desventajas de la estrategia de copia
Para proporcionar tolerancia a fallas, HDFS replicará bloques de archivos en diferentes DataNodes de acuerdo con el factor de replicación (factor de replicación) .
El factor de replicación predeterminado es 3 (tenga en cuenta que 3 aquí se refiere a 1+2=3 , no a un 3 adicional ), por lo que habrá dos copias adicionales excepto el bloque original. Cada copia utiliza el 100 % de la sobrecarga de almacenamiento, lo que da como resultado una sobrecarga de almacenamiento del 200 %. Estas copias también consumen otros recursos, como el ancho de banda de la red .
Cuando el factor de replicación es N , existen capacidades de tolerancia a fallas N-1 , pero la eficiencia del almacenamiento es solo 1/N .
4.2 Introducción a la codificación de borrado ( EC )
La tecnología de codificación de borrado ( EC para abreviar) es una tecnología tolerante a errores de codificación. Se utilizó por primera vez en la industria de las comunicaciones y la recuperación de datos en la transmisión de datos. Divide los datos en bloques y luego calcula los datos de verificación, de modo que los datos de cada parte estén correlacionados . Cuando se pierde una parte de los bloques de datos, los bloques de datos perdidos se pueden calcular a través de los bloques de datos restantes y los bloques de verificación .
Después de Hadoop 3.0, se introdujo la tecnología de codificación de borrado (Erasure Coding ), que puede aumentar la utilización del almacenamiento en más del 50% y garantizar la confiabilidad de los datos.
4.3 Código Reed-Solomon ( RS )
El código Reed-Solomon ( RS ) es un código de borrado de uso común, tiene dos parámetros k y m , registrados como RS(k , m) .
Un vector compuesto por k bloques de datos se multiplica por una matriz generadora (Generator Matrix ) GT para obtener un vector de palabra en clave ( codeword ), que consta de k bloques de datos ( d0,d1..d3 ) y m bloques de verificación ( c0,c1 ). forma.
Si el bloque de datos se pierde, el bloque de datos perdido se puede recuperar multiplicando la matriz inversa GT por el vector de palabra código.
Por ejemplo, hay tres datos originales de 7 , 8 y 9 , y dos datos de verificación 50 y 122 se calculan mediante la multiplicación de matrices .
En este momento, los datos originales más los datos de verificación, un total de cinco datos: 7 , 8 , 9 , 50 , 122 , dos se pueden perder a voluntad y luego el algoritmo los recupera.
4.4 Arquitectura Hadoop EC
Para admitir la codificación de borrado, la arquitectura HDFS ha sufrido algunos cambios y ajustes.
- Extensiones de nodo de nombre
Un archivo HDFS seccionado está compuesto lógicamente por grupos de bloques (grupos de bloques) , y cada grupo de bloques contiene una cierta cantidad de bloques internos. Esto permite la gestión de archivos a nivel de grupo de bloques en lugar de a nivel de bloque.
- extensión de cliente
Las rutas de lectura y escritura del cliente se han mejorado para procesar múltiples bloques internos dentro de un grupo de bloques en paralelo.
- Extensión de nodo de datos
Los DataNodes ejecutan una tarea adicional ErasureCodingWorker ( ECWorker ) para la recuperación en segundo plano de bloques de codificación de borrado fallidos . El NameNode detecta el bloque EC fallido y luego elige un DataNode para realizar el trabajo de recuperación.
- Estrategia de codificación de borrado
Para adaptarse a cargas de trabajo heterogéneas, los archivos y directorios en clústeres HDFS pueden tener diferentes estrategias de codificación de replicación y borrado. Las políticas de codificación de borrado resumen cómo se codifican / decodifican los archivos. De forma predeterminada , la política RS-6-3-1024k está habilitada, RS representa el algoritmo codificador Reed-Solomon , 6 y 3 representan el número de bloques de datos y bloques de paridad, y 1024k representa el tamaño de la unidad de división.
El esquema de REPLICACIÓN predeterminado también se admite en directorios. Solo se puede configurar en directorios para obligar al directorio a adoptar un esquema de replicación 3x y no heredar la política de codificación de borrado de sus antepasados. Esta estrategia permite intercalar directorios de esquemas de replicación 3x con directorios codificados para borrar. La REPLICACIÓN siempre está habilitada.
Además, los usuarios también pueden definir sus propias políticas EC a través de archivos XML . Hay un archivo XML de política EC de muestra llamado user_ec_policies.xml.template en el directorio conf de Hadoop . Los usuarios pueden consultar este archivo.
- Intel ISA-L
Intel ISA-L significa Biblioteca de aceleración de almacenamiento inteligente Intel . ISA-L es una colección de código abierto de funciones de bajo nivel optimizadas para aplicaciones de almacenamiento. Incluye código de borrado tipo Reed-Solomon de bloqueo rápido optimizado para los conjuntos de instrucciones Intel AVX y AVX2 . Los códigos de borrado HDFS pueden utilizar ISA-L para acelerar los cálculos de codificación y decodificación.
4.5 Método de implementación de codificación de borrado
4.5.1 Configuración de clúster y hardware
El trabajo de codificación y decodificación consume CPU adicional en clientes HDFS y DataNodes .
Los archivos codificados por borrado también se distribuyen por todo el bastidor para lograr tolerancia a fallos. Esto significa que al leer y escribir archivos seccionados, la mayoría de las operaciones se realizan en el bastidor. Por tanto, el ancho de banda de la red también es muy importante.
Para la tolerancia a fallas del bastidor, también es importante tener una cantidad suficiente de bastidores , cada uno de los cuales no contenga más bloques que el número de bloques de paridad EC . Número de bastidores = (bloque de datos + bloque de paridad) / bloque de paridad después del redondeo .
Digamos que para la estrategia EC RS ( 6,3 ), esto significa un mínimo de 3 bastidores (calculados por ( 6+3 ) /3=3 ), idealmente 9 o más, para manejar el tiempo de inactividad planificado y no planificado. Para los clústeres con menos bastidores que unidades de paridad, HDFS no puede mantener la tolerancia a fallos del bastidor, pero seguirá intentando distribuir archivos seccionados entre varios nodos para preservar la tolerancia a fallos a nivel de nodo. Por lo tanto, se recomienda configurar racks con una cantidad similar de DataNodes .
4.5.2 Configuración de la política de código de borrado
La política de código de borrado se especifica mediante el parámetro dfs.namenode.ec.system.default.policy , el valor predeterminado es RS-6-3-1024k y otras políticas están deshabilitadas de forma predeterminada .
Se puede habilitar un conjunto de políticas mediante el comando hdfs ec [-enablePolicy -policy <policyName>] .
4.5.3 Habilitar Intel ISA-L (Biblioteca de aceleración de almacenamiento inteligente)
La implementación nativa HDFS del códec RS predeterminado utiliza la biblioteca Intel ISA-L para mejorar los cálculos de codificación y decodificación. Para habilitar y utilizar Intel ISA-L , se requieren tres pasos.
- Construya la biblioteca ISA-L ;
- Construya Hadoop con soporte ISA-L ;
- Utilice -Dbundle.isal para copiar el contenido del directorio isal.lib en el archivo tar final . Implemente Hadoop usando un archivo tar . Asegúrese de que ISA-L esté disponible en clientes HDFS y DataNodes .
Software requerido:
software | Versión |
---|---|
Hadoop | 3.2.4 |
uno-l | 2.28.0 |
nombre | 2.14.02 |
Yasm | 1.2.0 |
4.5.3.1 Instalar yasm y nasm
# 在Hadoop集群所有节点上安装yasm和nasm。
yum install -y yasm
yum install -y nasm
# 注意:isa-l-2.28.0 对 nasm 和 yasm 有版本要求,低版本在安装时会报错。
4.5.3.2 Compilar e instalar isa-l-2.28.0
# 在 Hadoop集群所有节点上编译安装 isa-l-2.28.0。
tar -zxvf isa-l-2.28.0.tar.gz
cd isa-l-2.28.0
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
make install
make -f Makefile.unx
# 检查 libisal.so* 是否成功
ll /lib64/libisal.so*
############如果有,则跳过##############
############如果没有有,则复制##############
cp bin/libisal.so bin/libisal.so.2 /lib64
4.5.3.3 Comprobar si isa-l está habilitado en Hadoop
[root@hadoop01 ~]# hadoop checknative
Native library checking:
hadoop: true /usr/hdp/3.0.0.0-1634/hadoop/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
zstd : false
snappy: true /usr/hdp/3.0.0.0-1634/hadoop/lib/native/libsnappy.so.1
lz4: true revision:10301
bzip2: true /lib64/libbz2.so.1
openssl: true /lib64/libcrypto.so
ISA-L: true /lib64/libisal.so.2 -------------> Shows that ISA-L is loaded.
4.5.4 Comandos EC
[root@hadoop01 ~]# hdfs ec
Usage: bin/hdfs ec [COMMAND]
[-listPolicies]
[-addPolicies -policyFile <file>]
[-getPolicy -path <path>]
[-removePolicy -policy <policy>]
[-setPolicy -path <path> [-policy <policy>] [-replicate]]
[-unsetPolicy -path <path>]
[-listCodecs]
[-enablePolicy -policy <policy>]
[-disablePolicy -policy <policy>]
[-verifyClusterSetup [-policy <policy>...<policy>]]
[-help <command-name>]
[-setPolicy -path <ruta> [ -policy < política > ] [-replicate ]]
-
Establece la política de codificación de borrado en el directorio en la ruta especificada.
-
ruta : directorio en HDFS . Este es un parámetro requerido. La configuración de una política solo afecta a los archivos recién creados, no a los archivos existentes.
-
política : la política de codificación de borrado que se utilizará para los archivos de este directorio. La política predeterminada RS-6-3-1024k .
-
-replicate aplica el esquema de REPLICACIÓN predeterminado en el directorio, lo que obliga al directorio a adoptar un esquema de replicación 3x . replicate y -policy <policy> son parámetros opcionales . No se pueden especificar al mismo tiempo.
[ -getPolicy -ruta <ruta> ]
Obtenga los detalles de la política de codificación de borrado para el archivo o directorio en la ruta especificada.
[-unsetPolicy -path <ruta> ] Anula la política de codificación de borrado establecida por una llamada anterior a setPolicy en el directorio . unsetPolicy no funciona si el directorio hereda una política de codificación de borrado de un directorio ancestral . Cancelar una política en un directorio sin un conjunto de políticas explícito no devolverá un error.
[-listPolicies]
Enumera todas (habilitar, deshabilitar y eliminar) las políticas de codificación de borrado registradas en HDFS. Sólo las políticas habilitadas son adecuadas para su uso con el comando setPolicy .
[-addPolicies -policyFile <archivo> ] Agrega una lista de políticas de codificación de borrado definidas por el usuario. [-listCodecs] Obtenga una lista de códecs y codificadores de codificación de borrado admitidos en el sistema. [-removePolicy -policy < nombreDePolítica > ] Elimina una política de codificación de borrado definida por el usuario. [-enablePolicy -policy < nombreDePolítica > ] Habilitar la política de codificación de borrado. [-disablePolicy -policy < nombreDePolítica > ] Desactiva la política de codificación de borrado .