Usar segmentos con el espacio de nombres jerárquico habilitado para cargas de trabajo de Hadoop

En esta página se describe cómo usar los espacios de nombres jerárquicos en los contenedores habilitados para cargas de trabajo de Hadoop.

Información general

Cuando se usa un segmento de Cloud Storage con un espacio de nombres jerárquico, se puede configurar el conector de Cloud Storage para que use la operación cambiar nombre de carpeta en cargas de trabajo como Hadoop, Spark o Hive.

En un contenedor sin espacio de nombres jerárquico, una operación de cambio de nombre en Hadoop, Spark y Hive implica varios trabajos de copia y eliminación de objetos, lo que afecta al rendimiento y la coherencia. Cambiar el nombre de una carpeta mediante el conector de Cloud Storage optimiza el rendimiento y garantiza la coherencia al gestionar carpetas con un gran número de objetos.

Antes de empezar

Para usar las funciones de los segmentos de espacio de nombres jerárquico, usa las siguientes versiones del conector de Cloud Storage:

  • 2.2.23 o una versión posterior (si usas la versión 2.x.x)
  • 3.0.1 o posterior (si usas la versión 3.x.x)

Las versiones anteriores del conector (3.0.0 y anteriores a la 2.2.23) tienen limitaciones. Para obtener más información sobre las limitaciones, consulta Compatibilidad con el conector de Cloud Storage versión 3.0.0 o versiones anteriores a la 2.2.23.

Habilitar el conector de Cloud Storage en un clúster

En esta sección se describe cómo habilitar el conector de Cloud Storage en un clúster de Dataproc y en un clúster de Hadoop autogestionado.

Dataproc

Puedes usar la CLI de Google Cloud para crear un clúster de Dataproc y habilitar el conector de Cloud Storage para realizar las operaciones de carpetas.

  1. Crea un clúster de Dataproc con el siguiente comando:

      gcloud dataproc clusters create CLUSTER_NAME
      --properties=core:fs.gs.hierarchical.namespace.folders.enable=true,
      core:fs.gs.http.read-timeout=30000
      

    Donde:

    • CLUSTER_NAME es el nombre del clúster. Por ejemplo, my-cluster
    • fs.gs.hierarchical.namespace.folders.enable se usa para habilitar el espacio de nombres jerárquico en un segmento.
    • fs.gs.http.read-timeout es el tiempo máximo permitido, en milisegundos, para leer datos de una conexión establecida. Este ajuste es opcional.

Hadoop autogestionado

Puedes habilitar el conector de Cloud Storage en tu clúster de Hadoop autogestionado para realizar las operaciones de carpetas.

  1. Añade lo siguiente al archivo de configuración core-site.xml:

        <property>
          <name>fs.gs.hierarchical.namespace.folders.enable</name>
          <value>true</value>
        </property>
        <property>
          <name>fs.gs.http.read-timeout</name>
          <value>30000</value>
        </property>
      

    Donde:

    • fs.gs.hierarchical.namespace.folders.enable se usa para habilitar el espacio de nombres jerárquico en un segmento
    • fs.gs.http.read-timeout es el tiempo máximo permitido, en milisegundos, para leer datos de una conexión establecida. Este ajuste es opcional.

Compatibilidad con la versión 3.0.0 del conector de Cloud Storage o versiones anteriores a la 2.2.23

Si usas la versión 3.0.0 del conector de Cloud Storage o versiones anteriores a la 2.2.23, o bien si inhabilitas las operaciones de carpetas para el espacio de nombres jerárquico, se pueden producir las siguientes limitaciones:

  • Cambios de nombre de carpetas ineficientes: en Hadoop, los cambios de nombre de carpetas se realizan mediante operaciones de copia y eliminación a nivel de objeto, lo que es más lento y menos eficiente que la operación rename folder específica.

  • Acumulación de carpetas vacías: las carpetas no se eliminan automáticamente, lo que provoca que se acumulen carpetas vacías en tu cubo. La acumulación de carpetas vacías puede tener las siguientes consecuencias:

    • Aumentan los costes de almacenamiento si no se eliminan explícitamente.
    • Ralentizan las operaciones de lista y aumentan el riesgo de que se agote el tiempo de espera de las operaciones de lista.

  • Problemas de compatibilidad: si se mezclan versiones antiguas y nuevas del conector, o si se habilitan y se inhabilitan las operaciones de carpetas, pueden surgir problemas de compatibilidad al cambiar el nombre de las carpetas. Veamos la siguiente situación, en la que se usa una combinación de versiones de conectores:

    1. Usa la versión del conector de Cloud Storage anterior a la 2.2.23 para realizar las siguientes tareas:

      1. Escribe objetos en la carpeta foo/.
      2. Cambia el nombre de la carpeta foo/ a bar/. La operación de cambio de nombre copia y elimina los objetos de foo/, pero no elimina la carpeta foo/ vacía.
    2. Usa la versión 2.2.23 del conector de Cloud Storage con los ajustes de operaciones de carpetas habilitados para cambiar el nombre de la carpeta bar/ a foo/.

    La versión 2.2.23 del conector, con la operación de carpeta habilitada, detecta la carpeta foo/, lo que provoca que la operación de cambio de nombre falle. La versión anterior del conector no eliminaba la carpeta foo/ porque la operación de la carpeta estaba inhabilitada.

Siguientes pasos

Pruébalo

Si es la primera vez que utilizas Google Cloud, crea una cuenta para evaluar el rendimiento de Cloud Storage en situaciones reales. Los nuevos clientes también reciben 300 USD en crédito gratuito para ejecutar, probar y desplegar cargas de trabajo.

Probar Cloud Storage gratis