Maison base de données tutoriel mysql Hadoop集群间的hbase数据迁移

Hadoop集群间的hbase数据迁移

Jun 07, 2016 pm 05:58 PM
hadoop hbase 使用 数据 tous les jours 迁移 集群

在日常的使用过程中,可能经常需要将一个集群中hbase的数据迁移到或者拷贝到另外一个集群中,这时候,可能会出很多问题 以下是我在处理的过程中的一些做法和处理方式。 前提,两个hbase的版本一直,否则可能出现不可预知的问题,造成数据迁移失败 当两个集群

在日常的使用过程中,可能经常需要将一个集群中hbase的数据迁移到或者拷贝到另外一个集群中,这时候,可能会出很多问题

以下是我在处理的过程中的一些做法和处理方式。

前提,两个hbase的版本一直,否则可能出现不可预知的问题,造成数据迁移失败

当两个集群不能通讯的时候,可以先将数据所在集群中hbase的数据文件拷贝到本地

具体做法如下:

在Hadoop目录下执行如下命令,拷贝到本地文件。

bin/Hadoop fs -copyToLocal /hbase/tab_keywordflow /home/test/xiaochenbak

然后你懂得,将文件拷贝到你需要的你需要迁移到的那个集群中,目录是你的表的目录,

如果这个集群中也有对应的表文件,那么删除掉,然后拷贝。

/bin/Hadoop fs -rmr /hbase/tab_keywordflow

/bin/Hadoop fs -copyFromLocal /home/other/xiaochenbak /hbase/tab_keywordflow

此时的/home/other/xiaochenbak为你要迁移到数据的集群。

重置该表在.META.表中的分区信息

bin/hbase org.jruby.Main /home/other/hbase/bin/add_table.rb /hbase/tab_keywordflow

/home/other/hbase/bin/add_table.rb为ruby脚本,可以执行,脚本内容如下:另存为add_table.rb即可


# Copyright 2009 The Apache Software Foundation 

# Licensed to the Apache Software Foundation (ASF) under one 
# or more contributor license agreements.  See the NOTICE file 
# distributed with this work for additional information 
# regarding copyright ownership.  The ASF licenses this file 
# to you under the Apache License, Version 2.0 (the 
# "License"); you may not use this file except in compliance 
# with the License.  You may obtain a copy of the License at 

#     http://www.apache.org/licenses/LICENSE-2.0  

# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
# See the License for the specific language governing permissions and 
# limitations under the License. 

# Script adds a table back to a running hbase. 
# Currently only works on if table data is in place. 

# To see usage for this script, run: 

#  ${HBASE_HOME}/bin/hbase org.jruby.Main addtable.rb 

include Java 
import org.apache.Hadoop.hbase.util.Bytes 
import org.apache.Hadoop.hbase.HConstants 
import org.apache.Hadoop.hbase.regionserver.HRegion 
import org.apache.Hadoop.hbase.HRegionInfo 
import org.apache.Hadoop.hbase.client.HTable 
import org.apache.Hadoop.hbase.client.Delete 
import org.apache.Hadoop.hbase.client.Put 
import org.apache.Hadoop.hbase.client.Scan 
import org.apache.Hadoop.hbase.HTableDescriptor 
import org.apache.Hadoop.hbase.HBaseConfiguration 
import org.apache.Hadoop.hbase.util.FSUtils 
import org.apache.Hadoop.hbase.util.Writables 
import org.apache.Hadoop.fs.Path 
import org.apache.Hadoop.fs.FileSystem 
import org.apache.commons.logging.LogFactory 
 
# Name of this script 
NAME = "add_table" 
 
# Print usage for this script 
def usage 
  puts 'Usage: %s.rb TABLE_DIR [alternate_tablename]' % NAME 
  exit! 
end 
 
# Get configuration to use. 
c = HBaseConfiguration.new() 
 
# Set Hadoop filesystem configuration using the hbase.rootdir. 
# Otherwise, we'll always use localhost though the hbase.rootdir 
# might be pointing at hdfs location. 
c.set("fs.default.name", c.get(HConstants::HBASE_DIR)) 
fs = FileSystem.get(c) 
 
# Get a logger and a metautils instance. 
LOG = LogFactory.getLog(NAME) 
 
# Check arguments 
if ARGV.size 2 
  usage 
end 
 
# Get cmdline args. 
srcdir = fs.makeQualified(Path.new(java.lang.String.new(ARGV[0]))) 
 
if not fs.exists(srcdir) 
  raise IOError.new("src dir " + srcdir.toString() + " doesn't exist!") 
end 
 
# Get table name 
tableName = nil 
if ARGV.size > 1 
  tableName = ARGV[1] 
  raise IOError.new("Not supported yet") 
elsif 
  # If none provided use dirname 
  tableName = srcdir.getName() 
end 
HTableDescriptor.isLegalTableName(tableName.to_java_bytes) 
 
# Figure locations under hbase.rootdir 
# Move directories into place; be careful not to overwrite. 
rootdir = FSUtils.getRootDir(c) 
tableDir = fs.makeQualified(Path.new(rootdir, tableName)) 
 
# If a directory currently in place, move it aside. 
if srcdir.equals(tableDir) 
  LOG.info("Source directory is in place under hbase.rootdir: " + srcdir.toString()); 
elsif fs.exists(tableDir) 
  movedTableName = tableName + "." + java.lang.System.currentTimeMillis().to_s 
  movedTableDir = Path.new(rootdir, java.lang.String.new(movedTableName)) 
  LOG.warn("Moving " + tableDir.toString() + " aside as " + movedTableDir.toString()); 
  raise IOError.new("Failed move of " + tableDir.toString()) unless fs.rename(tableDir, movedTableDir) 
  LOG.info("Moving " + srcdir.toString() + " to " + tableDir.toString()); 
  raise IOError.new("Failed move of " + srcdir.toString()) unless fs.rename(srcdir, tableDir) 
end 
 
# Clean mentions of table from .META. 
# Scan the .META. and remove all lines that begin with tablename 
LOG.info("Deleting mention of " + tableName + " from .META.") 
metaTable = HTable.new(c, HConstants::META_TABLE_NAME) 
tableNameMetaPrefix = tableName + HConstants::META_ROW_DELIMITER.chr 
scan = Scan.new((tableNameMetaPrefix + HConstants::META_ROW_DELIMITER.chr).to_java_bytes) 
scanner = metaTable.getScanner(scan) 
# Use java.lang.String doing compares.  Ruby String is a bit odd. 
tableNameStr = java.lang.String.new(tableName) 
while (result = scanner.next()) 
  rowid = Bytes.toString(result.getRow()) 
  rowidStr = java.lang.String.new(rowid) 
  if not rowidStr.startsWith(tableNameMetaPrefix) 
    # Gone too far, break 
    break 
  end 
  LOG.info("Deleting row from catalog: " + rowid); 
  d = Delete.new(result.getRow()) 
  metaTable.delete(d) 
end 
scanner.close() 
 
# Now, walk the table and per region, add an entry 
LOG.info("Walking " + srcdir.toString() + " adding regions to catalog table") 
statuses = fs.listStatus(srcdir) 
for status in statuses 
  next unless status.isDir() 
  next if status.getPath().getName() == "compaction.dir" 
  regioninfofile =  Path.new(status.getPath(), HRegion::REGIONINFO_FILE) 
  unless fs.exists(regioninfofile) 
    LOG.warn("Missing .regioninfo: " + regioninfofile.toString()) 
    next 
  end 
  is = fs.open(regioninfofile) 
  hri = HRegionInfo.new() 
  hri.readFields(is) 
  is.close() 
  # TODO: Need to redo table descriptor with passed table name and then recalculate the region encoded names. 
  p = Put.new(hri.getRegionName()) 
  p.add(HConstants::CATALOG_FAMILY, HConstants::REGIONINFO_QUALIFIER, Writables.getBytes(hri)) 
  metaTable.put(p) 
  LOG.info("Added to catalog: " + hri.toString()) 
end 
好了,以上就是我的做法,如何集群键可以通信,那就更好办了,相信你懂得,scp
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel logiciel est CrystalDiskmark ? -Comment utiliser crystaldiskmark ? Quel logiciel est CrystalDiskmark ? -Comment utiliser crystaldiskmark ? Mar 18, 2024 pm 02:58 PM

CrystalDiskMark est un petit outil de référence pour disques durs qui mesure rapidement les vitesses de lecture/écriture séquentielles et aléatoires. Ensuite, laissez l'éditeur vous présenter CrystalDiskMark et comment utiliser crystaldiskmark~ 1. Introduction à CrystalDiskMark CrystalDiskMark est un outil de test de performances de disque largement utilisé pour évaluer la vitesse et les performances de lecture et d'écriture des disques durs mécaniques et des disques SSD (SSD). ). Performances d’E/S aléatoires. Il s'agit d'une application Windows gratuite qui fournit une interface conviviale et divers modes de test pour évaluer différents aspects des performances du disque dur. Elle est largement utilisée dans les revues de matériel.

Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Open source! Au-delà de ZoeDepth ! DepthFM : estimation rapide et précise de la profondeur monoculaire ! Apr 03, 2024 pm 12:04 PM

0. À quoi sert cet article ? Nous proposons DepthFM : un modèle d'estimation de profondeur monoculaire génératif de pointe, polyvalent et rapide. En plus des tâches traditionnelles d'estimation de la profondeur, DepthFM démontre également des capacités de pointe dans les tâches en aval telles que l'inpainting en profondeur. DepthFM est efficace et peut synthétiser des cartes de profondeur en quelques étapes d'inférence. Lisons ce travail ensemble ~ 1. Titre des informations sur l'article : DepthFM : FastMonocularDepthEstimationwithFlowMatching Auteur : MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Utilisez ddrescue pour récupérer des données sous Linux Utilisez ddrescue pour récupérer des données sous Linux Mar 20, 2024 pm 01:37 PM

DDREASE est un outil permettant de récupérer des données à partir de périphériques de fichiers ou de blocs tels que des disques durs, des SSD, des disques RAM, des CD, des DVD et des périphériques de stockage USB. Il copie les données d'un périphérique bloc à un autre, laissant derrière lui les blocs corrompus et ne déplaçant que les bons blocs. ddreasue est un puissant outil de récupération entièrement automatisé car il ne nécessite aucune interruption pendant les opérations de récupération. De plus, grâce au fichier map ddasue, il peut être arrêté et repris à tout moment. Les autres fonctionnalités clés de DDREASE sont les suivantes : Il n'écrase pas les données récupérées mais comble les lacunes en cas de récupération itérative. Cependant, il peut être tronqué si l'outil est invité à le faire explicitement. Récupérer les données de plusieurs fichiers ou blocs en un seul

Comment migrer l'historique des discussions WeChat vers un nouveau téléphone Comment migrer l'historique des discussions WeChat vers un nouveau téléphone Mar 26, 2024 pm 04:48 PM

1. Ouvrez l'application WeChat sur l'ancien appareil, cliquez sur [Moi] dans le coin inférieur droit, sélectionnez la fonction [Paramètres] et cliquez sur [Chat]. 2. Sélectionnez [Migration et sauvegarde de l'historique des discussions], cliquez sur [Migrer] et sélectionnez la plate-forme vers laquelle vous souhaitez migrer l'appareil. 3. Cliquez sur [Sélectionner les discussions à migrer], cliquez sur [Sélectionner tout] dans le coin inférieur gauche ou sélectionnez vous-même les enregistrements de discussion. 4. Après la sélection, cliquez sur [Démarrer] dans le coin inférieur droit pour vous connecter à ce compte WeChat à l'aide du nouvel appareil. 5. Scannez ensuite le code QR pour lancer la migration des enregistrements de discussion. Les utilisateurs n'ont qu'à attendre la fin de la migration.

Comment télécharger foobar2000 ? -Comment utiliser foobar2000 Comment télécharger foobar2000 ? -Comment utiliser foobar2000 Mar 18, 2024 am 10:58 AM

foobar2000 est un logiciel qui peut écouter des ressources musicales à tout moment. Il vous offre toutes sortes de musique avec une qualité sonore sans perte. La version améliorée du lecteur de musique vous permet d'obtenir une expérience musicale plus complète et plus confortable. lire l'audio avancé sur l'ordinateur. L'appareil est transplanté sur le téléphone mobile pour offrir une expérience de lecture de musique plus pratique et efficace. La conception de l'interface est simple, claire et facile à utiliser. opérations pour démarrer rapidement. Il prend également en charge une variété de skins et de thèmes, personnalisez les paramètres en fonction de vos propres préférences et créez un lecteur de musique exclusif prenant en charge la lecture de plusieurs formats audio. Il prend également en charge la fonction de gain audio pour régler le volume. selon vos propres conditions auditives pour éviter les dommages auditifs causés par un volume excessif. Ensuite, laisse-moi t'aider

Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Google est ravi : les performances de JAX surpassent Pytorch et TensorFlow ! Cela pourrait devenir le choix le plus rapide pour la formation à l'inférence GPU Apr 01, 2024 pm 07:46 PM

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. La vitalité de la super intelligence s'éveille ! Mais avec l'arrivée de l'IA qui se met à jour automatiquement, les mères n'ont plus à se soucier des goulots d'étranglement des données. Apr 29, 2024 pm 06:55 PM

Je pleure à mort. Le monde construit à la folie de grands modèles. Les données sur Internet ne suffisent pas du tout. Le modèle de formation ressemble à « The Hunger Games », et les chercheurs en IA du monde entier se demandent comment nourrir ces personnes avides de données. Ce problème est particulièrement important dans les tâches multimodales. À une époque où rien ne pouvait être fait, une équipe de start-up du département de l'Université Renmin de Chine a utilisé son propre nouveau modèle pour devenir la première en Chine à faire de « l'auto-alimentation des données générées par le modèle » une réalité. De plus, il s’agit d’une approche à deux volets, du côté compréhension et du côté génération, les deux côtés peuvent générer de nouvelles données multimodales de haute qualité et fournir un retour de données au modèle lui-même. Qu'est-ce qu'un modèle ? Awaker 1.0, un grand modèle multimodal qui vient d'apparaître sur le Forum Zhongguancun. Qui est l'équipe ? Moteur Sophon. Fondé par Gao Yizhao, doctorant à la Hillhouse School of Artificial Intelligence de l’Université Renmin.

Vitesse Internet lente des données cellulaires sur iPhone : correctifs Vitesse Internet lente des données cellulaires sur iPhone : correctifs May 03, 2024 pm 09:01 PM

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible

See all articles