HBase et ZooKeeper rôles dans Hadoop?

j'ai installé Hadoop single node cluster dans ma machine Ubuntu et capable d'exécuter NameNode, datanode, etc.. Maintenant je dois installer HBase et Zookeeper. Mais je ne sais pas vraiment ce qu'ils sont. N'importe qui pourrait me donner une brève description de ces outils.

Merci

15
demandé sur Radhakrishna 2013-07-29 13:44:21

2 réponses

tout d'Abord je vous recommandons fortement de passer par les pages officielles de ces projets. Aller ici pour HBase et ici pour la Gardienne.

HBase est un datastore NoSQL qui fonctionne sur votre cluster Hadoop existant (HDFS). Il vous offre des capacités de type au hasard, en temps réel des lectures/écritures, ce qui fait défaut à HDFS étant un FS. Puisqu'il s'agit d'un datastore NoSQL, il ne suit pas les conventions et les terminologies SQL. HBase fournit un bon ensemble des API (incluant JAVA et Thrift). Avec ce HBase offre également une intégration transparente avec le cadre MapReduce. Mais, avec tous ces avantages de HBase, vous devriez garder ceci à l'esprit que la lecture-écriture aléatoire est rapide, mais a toujours des frais généraux supplémentaires. Donc réfléchissez bien avant de vous prendre une décision.

ZooKeeper est une haute performance service de coordination pour les applications distribuées (comme HBase). Il expose les services communs comme désignation, de la configuration Gestion, Synchronisation et services de groupe, dans une interface simple pour ne pas avoir à les écrire à partir de zéro. Vous pouvez l'utiliser pour mettre en œuvre des protocoles de consensus, de gestion de groupe, d'élection de leaders et de présence. Et vous pouvez construire sur elle pour vos propres besoins spécifiques.

HBase dépend entièrement de Zookeeper. HBase vous offre la possibilité d'utiliser son Zookeeper intégré qui sera lancé à chaque fois que vous démarrez HBAse. Mais il n'est pas bon si vous travaillez sur un cluster de production. Dans de tels scénarios, il est toujours bon d'avoir un cluster dédié Zookeeper et de l'intégrer à votre cluster HBase.

Remarque : vous devriez toujours avoir un nombre impair de noeuds dans votre Quorum ZK.

HTH

22
répondu Tariq 2013-07-29 10:09:26

un aperçu:

Zookeeper: en bref, zookeeper est un outil de configuration et de gestion d'applications distribuées (cluster), et il sort indépendant de HBase. À partir de la documentation:

ZooKeeper est un service centralisé pour maintenir la configuration l'information, la désignation, la synchronisation répartie, et fournir des services de groupe. Tous ces types de services sont utilisés dans une forme ou une autre par les applications distribuées. Chaque fois qu'ils sont mis en œuvre Il ya beaucoup de travail qui va dans la correction des bogues et des conditions de course qui sont inévitables. En raison de la difficulté de la mise en œuvre de ces types de services, les applications au départ généralement lésiner sur eux ,ce qui les rend fragiles, en présence de changement et de difficile à gérer. Même si fait correctement, différent la mise en œuvre de ces services entraîne une complexité de gestion lorsque: le les applications sont déployées.

HBase: le datastore NoSQL au-dessus du HDFS (peut utiliser un système de fichiers simple, mais il ne garantit pas la durabilité des données). HBase contient deux services principaux:

  • maître serveur-le maître serveur (HMaster) coordonne le regrouper et effectuer des opérations administratives, telles que régions et équilibrage des charges.
  • serveurs de Région - La région les serveurs font le travail réel. Un sous-ensemble de la les données de chaque table est géré par chaque région serveur. Les Clients consultent les serveurs régionaux pour accéder aux données dans HBase.

La connexion entre HBase et Zookeeper:

un HBase distribué repose entièrement sur Zookeeper (pour la configuration et la gestion des clusters). Dans Apache HBase, ZooKeeper coordonne, communique et partage l'état entre les maîtres et les Régionservers. HBase a une politique de conception d'utiliser ZooKeeper seulement pour les données transitoires (c'est-à-dire pour la coordination et la communication d'état). Ainsi, si les données du gardien de L'HBase sont supprimées, seules les opérations transitoires sont affectées - les données peuvent continuer à être écrites et lues à/à partir de L'HBase.

une fois que vous avez démarré L'HBase - vous pouvez vérifier les processus qu'il a commencé à utiliser jps commande:

$ jps

la commande listera tous les processus java sur la machine (HBase lui - même est une application Java) - la sortie probable (en le cas d'un simple autonome HBase d'installation) doit être:

62019 Jps
61098 HMaster        
61233 HRegionServer     
61003 HQuorumPeer

Techniquement parlant: Par défaut HBase gère zookeeper lui - même i.e. démarrage et arrêt du quorum de zookeeper (le faisceau de noeuds de zookeeper) lorsque nous démarrons et arrêtons HBase-pour vérifier les paramètres regarder dans le fichier conf/hbase-evn.sh (dans votre répertoire hbase) il doit y avoir une ligne:

export HBASE_MANAGES_ZK=true

une fois défini, tout ce que nous devons faire est de définir les directives suivantes dans conf/hbase-site.xml - à partir de docs:

 <configuration>
    ...
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2181</value>
      <description> The port at which the clients will connect.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value>
      <description>Comma separated list of servers in the ZooKeeper Quorum.
      For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
      By default this is set to localhost for local and pseudo-distributed modes
      of operation. For a fully-distributed setup, this should be set to a full
      list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
      this is the list of servers which we will start/stop ZooKeeper on.
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/usr/local/zookeeper</value>
      <description>Property from ZooKeeper's config zoo.cfg.
      The directory where the snapshot is stored.
      </description>
    </property>
    ...
  </configuration>
7
répondu Nabeel Ahmed 2016-04-14 05:24:20