当前位置:网站首页>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
(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"
(5)InCMFonctionnement de l'interface: “Hôte”->“Parcel”->“Configuration”->Distant Parcel Dépôt URLNouveauphoenixChemin “http://cdh001/phoenix/”
(6)“Vérifier les mises à jourParcel”->TrouverPHOENIX “Télécharger”->“Répartition”->“Activation”
(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.
(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>
(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 .
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
边栏推荐
猜你喜欢
微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙(一)
Universal template for scikit learn model construction
Business case | how to promote the activity of sports and health app users? It is enough to do these points well
mysql新表,自增id长达20位,原因竟是......
go 语言 数组,字符串,切片
分库分表 & ShardingSphere
As a junior college student, I studied hard in closed doors for 56 days, won Ali offer with tears, five rounds of interviews and six hours of soul torture
PySide2
Node接入支付宝开放平台的沙箱实现支付功能
联想产品经理林林:天津当地网络运营商网络故障 ZUI系统后台服务器暂时无法正常工作
随机推荐
3300万IOPS、39微秒延迟、碳足迹认证,谁在认真搞事情?
websocket
centOS下mysql主从配置
室内外地图切换(室内基于ibeacons三点定位)
Spark入门基本操作
Restful WebService和gSoap WebService的本质区别
Quartus Prime硬件实验开发(DE2-115板)实验一CPU指令运算器设计
Universal template for scikit learn model construction
趣谈网络协议
1256: bouquet for algenon
leetcode--977. Squares of a Sorted Array
项目中遇到的问题(五)操作Excel接口Poi的理解
Android: answers to the recruitment and interview of intermediate Android Development Agency in early 2019 (medium)
微信小程序进行蓝牙初始化、搜索附近蓝牙设备及连接指定蓝牙(一)
基础知识学习记录
第十五章 软件工程新技术
Lin Lin, product manager of Lenovo: network failure of local network operator in Tianjin. The background server of Zui system can't work normally for the time being
初识go语言
SQL数据库
9月8日,临去松山湖的前夜