当前位置:网站首页>Intégration de Clusters CDH Phoenix basée sur la gestion cm

Intégration de Clusters CDH Phoenix basée sur la gestion cm

2022-04-23 14:03:00 Une centaine de nuits ont commencé

Basé surCMGestionCDHIntégration des grappesPhoenix

Fiche d'information:OriginalCDHCluster,ParHive+Hbase+ImpalaEffectuer des requêtes de traitement de données,HbaseLa grammaire est difficile à comprendre,Contrairement à la normaleSQL,ImpalaLa requête Speed est trop lente pour effectuer des modifications enregistrées.C'est pourquoi j'ai pensé àPhoenixPour intégrerHbase、HivePour résoudre les problèmes ci - dessus.

Prémisse:Déjà basé surCMInstallation et constructionCDHCluster,Le présent document adopte:parcelsIntégration des paquetsPhoenixÀCDHCluster.

TéléchargerPhoenix ParcelSac etJarPackage and Upload toCM-ServerNoeud

Utilisé dans le présent documentphoenixLes paquets de versions sont les suivants:

# ParcelSac
manifest.json
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha1
# JarSac
PHOENIX-1.0.jar

(1)Modifier.sha1Le dossier est.sha,C'est - à - dire supprimer le suffixe1.Oui.phoenixDeparcelSac etjarPaquet téléchargé verscloudera manager serverNodehttpdSous services/var/www/html/phoenix,ModifierphoenixPermissions du dossier777.Et peut êtrehttpAccès àhttp://cdh001/pheonix.

chmod 777 -R /var/www/html/phoenix
# /var/www/html/phoenixLa structure du Répertoire est la suivante:
-rwxrwxrwx. 1 root root      2478 8Mois   1 2019 manifest.json
-rwxrwxrwx  1 root root      5306 3Mois  18 10:37 PHOENIX-1.0.jar
-rwxrwxrwx. 1 root root 402216960 8Mois   1 2019 PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
-rwxrwxrwx. 1 root root        41 8Mois   1 2019 PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha

[Impossible de transférer l'image de la chaîne externe,Il peut y avoir un mécanisme antivol à la station source,Il est recommandé de sauvegarder l'image et de la télécharger directement(img-dt4oEoO9-1648092283868)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220324105131812.png)]

(2)Oui.parclCopie du paquet vers/opt/cloudera/parcel-repoTable des matières(Attention!manifest.jsonSiphoenixDans le catalogue),Et modifier les permissions777.

chmod 777 -R /opt/cloudera/parcel-repo
#/opt/cloudera/parcel-repoLa structure du Répertoire est la suivante:
-rwxrwxrwx. 1 root root      2478 8Mois   1 2019 manifest.json
-rwxrwxrwx. 1 root root 402216960 8Mois   1 2019 PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel
-rwxrwxrwx. 1 root root        41 8Mois   1 2019 PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel.sha

(3)Oui.phoenixDejarMets le sac./opt/cloudera/csdSous la table des matières,Et copie àhttpdSous le répertoire des services,Modifier les permissions777.

chmod 777 *R /opt/cloudera/csd
#/opt/cloudera/csdLa structure du Répertoire est la suivante:
-rwxr-xr-x 1 root root 5306 3Mois  18 10:39 PHOENIX-1.0.jar

(4)InCMFonctionnement de l'interface: “Gestion”->“Paramètres”->Saisissez la requête"csd"-> Le chemin du dépôt de descripteurs locaux a été modifié en "/opt/cloudera/csd"

Insérer la description de l'image ici

Insérer la description de l'image ici

(5)InCMFonctionnement de l'interface: “Hôte”->“Parcel”->“Configuration”->Distant Parcel Dépôt URLNouveauphoenixChemin “http://cdh001/phoenix/”

Insérer la description de l'image ici

Insérer la description de l'image ici

Insérer la description de l'image ici

(6)“Vérifier les mises à jourParcel”->TrouverPHOENIX “Télécharger”->“Répartition”->“Activation”

Insérer la description de l'image ici

Insérer la description de l'image ici

(7)InCM Fonctionnement de l'interface principale :Cluster Barre de menu"Ajouter un service"->Sélectionner"PHOENIX"->quary serverAttribution des noeuds(3 Tous les groupes )->Démarrage du Service,RetourCM L'interface peut voir Phoenix.
Insérer la description de l'image ici

Insérer la description de l'image ici

Insérer la description de l'image ici
Insérer la description de l'image ici

(8)ConfigurationHBASE, “HBASE”->“Configuration”->Recherche"hbase-site.xml"->“hbase-site.xmlDeHBaseFragment de code de configuration avancée du Service”,ParXMLVue du format,Coller ce qui suit,Et sauvegardez. Cette étape est phoenixIntégrationhbase.

<!--  Définir l'écriture du Journal de pré - écriture  wal Codage -->
<property>
  <name>hbase.regionserver.wal.codec</name>
  <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property> 

<!--  Activer les fonctions personnalisées de l'utilisateur (UDF) -->
<property>
  <name>phoenix.functions.allowUserDefinedFunctions</name>
  <value>true</value>
  <description>enable UDF functions</description>
</property>

Insérer la description de l'image ici

(9) Enregistrer les modifications de configuration , Redémarrer le service expiré hbaseEtphoenix.

(10)Oui.Phoenix Configuration du chemin d'installation dans la variable d'environnement système (Toutes les installationsPhoenix Exécution du noeud pour ).

vim /etc/profile
#--------------------phoenix------------------------------------
export PHOENIX_HOME=/opt/cloudera/parcels/PHOENIX-5.0.0-cdh6.2.0.p0.1308267
export PATH=$PATH:$PHOENIX_HOME/bin

#Activation en vigueur
source /etc/profile

(11) Démarrage de n'importe quel noeud phoenix,Par ordrephoenix-sqlline zkNoeudhostname:2181/hbase Accès à l'interface interactive.

phoenix-sqlline cdh185

Saisissez les commandes !table Le tableau de sortie fonctionne normalement .

Insérer la description de l'image ici

PhoenixIntégrationHive

Hive-phoenix Non consolidé avant hive Créer une erreur de cartographie dans

ParseException: Syntax error in line 7:undefined: STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler' ^ Encountered: BY Expected: AS CAUSED BY: Exception: Syntax error

Approche intégrée:Oui.phoenixSous le Répertoire d'installationlibMoyennephoenix-5.0.0-cdh6.2.0-hive.jar Copie àhiveRépertoire d'installation/libMoyenne.Toutes les installationspheonix Tous les noeuds doivent être copiés .

cp /opt/cloudera/parcels/PHOENIX/lib/phoenix/phoenix-5.0.0-cdh6.2.0-hive.jar /opt/cloudera/parcels/CDH/lib/hive/lib

Note::Inimpala End ne peut pas créer hive-phoeinxTableau de cartographie.

Hive-Hbase Mise en œuvre de la cartographie des tableaux

a、hiveCartographiehbaseTableau existant dans

#Entréehbase-shellLes ordres:
hbase shell
#CréationhbaseCommandes de table:
create 'hbase_test','user'
#Insérer une commande de données:
put 'hbase_test','111','user:name','jack'
put 'hbase_test','111','user:age','18'
#RequêtehbaseCommandes de table:scan 'hbase_test'

#EntréehiveCréationhbaseTableau des associations
create external table hbase_test1(
id int,
name string,
age int
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,user:name,user:age")
TBLPROPERTIES("hbase.table.name" = "hbase_test");

#VoirhiveDonnées du tableau,Les ordres:
select * from hbase_test1
#Allez.hiveInsérer des données dans le tableau:
insert into hbase_test1(id,name,age) values(333,'mary',25);
#RequêtehiveDonnées du tableau ,Les ordres:
select * from hbase_test1
#Requête simultanéehbaseDonnées du tableau,Oui.hive Ajouter un enregistrement dans 

Phoenix-Hbase Mise en œuvre de la cartographie des tableaux

a、phoenixCartographiehbase Tableau existant dans

#phoenix-shellCommande de démarrage
phoenix-sqlline.py cdh185:2181

#Inphoenix Créer la même implémentation de nom de table que HbaseCartographie des tableaux
create table if not exists "hbase_test"(
"id" varchar primary key, 
"user"."name" varchar, 
"user"."age" varchar
)
column_encoded_bytes=0;

create view if not exists "hbase_test2"(
"id" varchar primary key, 
"user"."name" varchar, 
"user"."age" varchar
)
column_encoded_bytes=0;

Attention!:
Phoneix Les tableaux créés dans HBase Le nom de la table mappée dans doit être le même 
phoneix Le nom du champ dans lequel le tableau a été créé et HBase Le nom du champ de la table de cartographie doit être le même (Attention à la casse)

#Insérer une commande de données:
upsert into "hbase_test"(id,"name","age") values('444','haha','33');
#Inhbase De nouveaux enregistrements sont disponibles dans 

Hive-Phoenix Mise en œuvre de la cartographie des tableaux

Hive Créer une table interne à la fin

Pour les tableaux internes,Hive Gérer le cycle de vie des tableaux et des données .CréationHiveTableau, Crée également un PhoenixTableau.Une foisHive Tableau supprimé ,Phoenix Le tableau a également été supprimé .

#hive Créer une table interne à la fin ,Et cartographierphoenix.
create table hive_phoenix_in_test (
	  s1 string,
	  i1 int,
	  f1 float,
	  d1 double
)
stored as parquetfile
STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'
TBLPROPERTIES (
    "phoenix.table.name" = "hive_phoenix_in_test",
    "phoenix.zookeeper.quorum" = "cdh185,cdh186,cdh188",
    "phoenix.zookeeper.znode.parent" = "/hbase",
    "phoenix.zookeeper.client.port" = "2181",
    "phoenix.rowkeys" = "s1, i1",
    "phoenix.column.mapping" = "s1:s1, i1:i1, f1:f1, d1:d1",
    "phoenix.table.options" = "SALT_BUCKETS=10, DATA_BLOCK_ENCODING='DIFF'"
);

#phoenix Requête de données de table finale 
select * from hive_phoenix_in_test

#hive Ajout de données 
insert into hive_phoenix_in_test values("a",1,1.0,1.0);
+-----+-----+------+------+
| s1  | i1  |  f1  |  d1  |
+-----+-----+------+------+
| a   | 1   | 1.0  | 1.0  |
+-----+-----+------+------+

#phoenix Ajout de données 
upsert into hive_phoenix_in_test values ('b',5,1.85,4.4894165);
upsert into hive_phoenix_in_test values ('b',9,1.85,4.4894165);
+-----+-----+-------+------------+
| s1  | i1  |  f1   |     d1     |
+-----+-----+-------+------------+
| b   | 5   | 1.85  | 4.4894165  |
| a   | 1   | 1.0   | 1.0        |
| b   | 9   | 1.85  | 4.4894165  |
+-----+-----+-------+------------+

#phoenixDonnées de mise à jour latérale,rowkey Même modification 
upsert into hive_phoenix_in_test values ('b',5,1.85,4.54);
+-----+-----+-------+------------+
| s1  | i1  |  f1   |     d1     |
+-----+-----+-------+------------+
| b   | 5   | 1.85  | 4.54       |
| a   | 1   | 1.0   | 1.0        |
| b   | 9   | 1.85  | 4.4894165  |
+-----+-----+-------+------------+

#pheonix Fin supprimer les données 
delete from hive_phoenix_in_test where "s1"='b' and "i1"=9;
+-----+-----+-------+-------+
| s1  | i1  |  f1   |  d1   |
+-----+-----+-------+-------+
| b   | 5   | 1.85  | 4.54  |
| a   | 1   | 1.0   | 1.0   |
+-----+-----+-------+-------+

Hive Créer une table externe

Pour les tableaux externes,HiveAvec**DéjàPhoenixTableau**À utiliser ensemble,Administration seulementHiveMétadonnées.DeHiveSupprimerEXTERNAL Le tableau ne sera supprimé que HiveMétadonnées,Mais ne supprimera pasPhoenixTableau.

create external table hive_phoenix_out_test (
  i1 int,
  s1 string,
  f1 float,
  d1 decimal
)
STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'
TBLPROPERTIES (
  "phoenix.table.name" = "hive_phoenix_out_test",
  "phoenix.zookeeper.quorum" = "cdh185,cdh186,cdh188",
  "phoenix.zookeeper.znode.parent" = "/hbase",
  "phoenix.zookeeper.client.port" = "2181",
  "phoenix.rowkeys" = "i1",
  "phoenix.column.mapping" = "i1:i1, s1:s1, f1:f1, d1:d1"
);

Description des paramètres

phoenix.table.name 					    #  Spécifie la cartographie phoenixNom du tableau,Par défaut ethiveMême tableau

phoenix.zookeeper.quorum 			    # hbaseDezkGroupe de gestion,Par défautlocalhost

phoenix.zookeeper.znode.parent 	        # DésignationHBaseDeZookeeperNoeud parent,Par défaut/hbase

phoenix.zookeeper.client.port 		    # AllezzookeeperPort,Par défaut2181

phoenix.rowkeys							# phoenix Colonne principale de la liste ,Obligatoire

phoenix.column.mapping					# hiveEtphoenix Cartographie entre les noms de colonnes 

**Attention!:** Toutes les suppressions et mises à jour doivent être effectuées à phoenix Exécution de l'aspect .

Autres éléments de configuration,Je peux recommencer.Hive-CLIParamètres intermédiaires.

Performance TuningRéglage des performances

Parameter Default Value Description
phoenix.upsert.batch.size 100 Nombre de données mises à jour par lots
[phoenix-table-name].disable.wal false Configuration temporaire des propriétés du tableau disable_walPourtrue, C'est - à - dire désactiver la fonction pré - écriture ,Les performances peuvent parfois être améliorées
[phoenix-table-name].auto.flush false Lorsque la fonction pré - écriture est désactivée et que le pinceau automatique est réglé à trueHeure,memstoreRafraîchir commehfile.hbaseArchitecture des composants

Query DataRecherche de données

Peut être utiliséhivesqlRequêtephoenixDonnées du tableau, Sur un seul tableau hive La requête peut fonctionner comme phoenix Les requêtes sont aussi rapides , Avec les paramètres de propriété suivants :hive.fetch.task.conversion=moreEthive.exec.parallel=true.

Parameter Default Value Description
hbase.scan.cache 100 Lire la taille de la ligne demandée par l'unit é
hbase.scan.cacheblock false Si le bloc de cache
split.by.stats false Set totrueHeure, Le mapper utilise des statistiques de table ,Chaquemapper Correspond à un guide
[hive-table-name].reducer.count 1 reducerNombre.InTezEn mode, Requêtes qui n'affectent qu'une seule table .
[phoenix-table-name].query.hint Conseils de recherche

Restrictions:hive Les opérations de mise à jour et de suppression nécessitent hiveEtphoenix Support du gestionnaire d'objets des deux côtés .

La cartographie des colonnes n'utilise pas correctement les colonnes clés de ligne de cartographie .

mapreduceEttez Il n'y a toujours qu'un seul devoir reducer.

Phoenix Syntaxe commune

phoenix Interface interactive activer la commande :./phoenix-sqlline hbaseListe des noeuds

phoenixDeDLL Il est recommandé d'inclure des guillemets doubles pour tous les noms de table et de colonne ,Sinonphoenix Tout sera mis en majuscules pour l'identification ,Même exécutionphoenix Une seule citation est utilisée pour la chaîne lors de la requête de la commande , Parce que les guillemets doubles sont reconnus comme des colonnes, des tableaux ou des familles de colonnes .

Parmi euxrowEst la clé primaire,Correspondant àhbaseDerowkey,Utilisation d'autres champs"Famille de colonnes".“Nom de la colonne"Comme nom de champ.Sihbase Les noms de colonnes dans le tableau contiennent des points décimaux , Si la famille de colonnes est ’cf’,Nom de la colonne:’root.a.b’,DansPhoenixDeDDL La correspondance doit être "cf”.“root.a.b” varchar.

command Fonction Exemple
!tables Voir tous les noms de table de données actuels (équivalent àshow tables) !tables
select Interrogation des données de la table select…from…
upsert Ajouter ou modifier des données upsert into tname values(xx)
delete Supprimer les enregistrements de table delete from tname

版权声明
本文为[Une centaine de nuits ont commencé]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204231401520772.html