tutorial - rebalanceo de hadoop y hbase luego de adiciones de nodos
hadoop wikipedia (2)
Tengo una pregunta fundamental sobre el equilibrador de carga. Acabo de terminar de agregar nuevos nodos a nuestro clúster hadoop (2.3) que también tiene hbase v0.98. Después de la adición y tener todos los nodos en línea en hadoop y hbase,
¿Cómo se afecta hbase por el rebalanceador hadoop? ¿Debo intentar explícitamente rebalancear hbase después de rebalanceo hadoop?
Mi grupo Hadoop está completamente ocupado por hbase. Al establecer balancer_switch = true, ¿volverá a equilibrar automáticamente hbase y hadoop?
¿Cuál es la mejor manera de asegurarse de que tanto hadoop como hbase estén equilibrados y funcionen bien también?
El equilibrador Hadoop (HDFS) mueve los bloques de un nodo a otro para intentar que sea así que cada nodo de datos tenga la misma cantidad de datos (dentro de un umbral configurable). Esto desordena la localidad de datos de HBases, lo que significa que una región en particular puede estar sirviendo un archivo que ya no se encuentra en su host local.
El balance_switch de HBase equilibra el clúster para que cada servidor de regiones aloje el mismo número de regiones (o cerca de). Esto es independiente del equilibrador de Hadoop (HDFS).
Si solo está ejecutando HBase, le recomiendo que no ejecute el equilibrador de Hadoop (HDFS), ya que hará que ciertas regiones pierdan su localidad de datos. Esto hace que cualquier solicitud a esa región tenga que pasar por la red a uno de los datanodes que está sirviendo su HFile.
Sin embargo, la localidad de datos de HBase se recupera. Cada vez que se produce una compactación, todos los bloques se copian localmente al servidor de regiones que sirve esa región y se fusionan. En ese punto, la localidad de datos se recupera para esa región. Con eso, todo lo que necesita hacer para agregar nuevos nodos al clúster es agregarlos. Hbase se encargará de rebalancear las regiones, y una vez que estas regiones de la localidad de datos compactos sean restauradas.
Hadoop no realiza el balanceo de nivel de bloque por defecto. Hay algunas herramientas que puede usar para hacer el balanceo manual en Hadoop, a saber https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/CommandsManual.html#balancer . Tenga en cuenta que equilibrar HDFS es bastante costoso si tiene un número pequeño de nodos completamente vacíos o nuevos que acaba de agregar a un clúster de otro modo completo, y mi experiencia con él es que solo hace un buen trabajo para equilibrar los bloques HDFS . Ejecutar el equilibrador varias veces puede mejorar el equilibrio general. También hay algunas implementaciones alternativas que pueden hacer un mejor trabajo de balanceo que la integrada en Hadoop.
Puede inspeccionar el saldo de bloques de la interfaz de usuario de HDFS NameNode si hace clic en el enlace "Nodos en vivo". La columna "Block Pool Used" es la columna útil para este propósito. Si observa una gran variación en el porcentaje de bloques utilizados en las distintas máquinas, es posible que deba volver a equilibrar el clúster de HDFS.
El balancer_switch
solo afecta el balance del servidor regional. HBase equilibrará automáticamente sus regiones en el clúster de forma predeterminada, pero puede ejecutar manualmente el balancer
en cualquier momento desde el hbase shell
.
Puede inspeccionar el saldo de la región desde la página principal de la interfaz de usuario maestra de HBase en la sección "Servidores de la región" en la columna llamada "Cargar", hay un valor llamado "numberOfOnlineRegions". En general, HBase hace un buen trabajo para mantener esto equilibrado. Solo he visto algunas veces cuando inicialmente creé tablas en las que el algoritmo de balanceo predeterminado presenta un conjunto de regiones sesgadas. En cualquier caso, el equilibrador regional es bastante barato y se puede hacer con bastante rapidez. Ejecutarlo una vez suele ser suficiente para lograr un estado muy equilibrado.