大數據PAZR集成ldap實操!what?

1.說明

p:presto a:allixop z:zeppelin r:rancher
分爲三部分講解
1.什麼是presto+Alluxio,大數據presto+Alluxio集成詳細部署說明
2.大數據zeppelin+rancher,docker的集成部署
3.presto+alluxio集成ldap實操測試,zeppelin+rancher集成ldap實操測試html

1.1什麼是presto

於內存的並行計算,Facebook推出的分佈式SQL交互式查詢引擎 多個節點管道式執行
支持任意數據源 數據規模GB~PB 是一種Massively parallel processing(mpp)(大規模並行處理)模型
數據規模PB 不是把PB數據放到內存,只是在計算中拿出一部分放在內存、計算、拋出、再拿java

爲何要用&優勢&特色
多數據源、支持SQL、擴展性(能夠本身擴展新的connector)、混合計算(同一種數據源的不一樣庫 or表;將多個數據源的數據進行合併)、高性能、流水線(pipeline)
大數據PAZR集成ldap實操!what?node

1.2 presto架構

大數據PAZR集成ldap實操!what?

2.1什麼是alluxio

Alluxio(前身Tachyon)是世界上第一個之內存爲中心的虛擬的分佈式存儲系統。它統一了數據訪問的方式,爲上層計算框架和底層存儲系統構建了橋樑。python

2.2Alluxio架構

Alluxio是大數據和機器學習生態系統中的新數據訪問層。Alluxio做爲據訪問層處於持久存儲層(如Amazon S3,Microsoft Azure Object Store,Apache HDFS或OpenStack Swift)和計算框架層(如Apache Spark,Presto或Hadoop MapReduce)之間。
大數據PAZR集成ldap實操!what?mysql

3.presto+Alluxio

Starbrust + Alluxio = 在一塊兒更好
和Alluxio一塊兒的Starbrust Presto是一個真正獨立的數據棧,支持任何文件或對象存儲進行交互式大數據分析。Starbrust Presto和Alluxio整合後可以共同幫助做業運行速度提升10倍,使重要數據本地化,並鏈接到各類存儲系統和雲。linux

大數據PAZR集成ldap實操!what?
用戶如今能夠將他們遺留的數據倉庫構建方法改成來使用現代雲數據棧,在Presto、Alluxio和任何文件或對象存儲上構建真正不一樣的數據棧。nginx

3.1 presto部署

3.1.1Presto安裝
大數據PAZR集成ldap實操!what?
3.1.2角色分配
大數據PAZR集成ldap實操!what?web

3.1.3測試環境:
1.CM6.3
2.Presto版本0.226
3.操做系統版本爲Redhat7.3
4.採用root用戶進行操做sql

3.1.4下載
下載最新版本
Presto服務的安裝目錄爲/opt/cloudera/parcels/presto
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.226/presto-server-0.226.tar.gzdocker

3.1.5將下載好的presto-server-0.226.tar.gz上傳至Presto集羣的全部服務器上

mkdir -p /opt/cloudera/parcels/presto
scp -r -P53742 presto-server-0.226.* root@incubator-t3-dc-002:/opt/cloudera/parcels/presto/
presto-server-0.226.jar

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

3.1.6解壓安裝(presto集羣全部機器)
將presto-server-0.205.tar.gz壓縮包解壓至/opt/cloudera/parcels目錄
# tar -zxvf presto-server-0.226.tar.gz -C /opt/cloudera/parcels/
#cd /opt/cloudera/parcels/
mv presto presto-soft
mv presto-server-0.226/ presto
3.1.7Java環境變量設置
vim /opt/cloudera/parcels/presto/bin/launcher文件以下位置添加JAVA環境變量
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
PATH=$JAVA_HOME/bin:$PATH
3.1.8準備Presto的配置文件
#mkdir -p /opt/cloudera/parcels/presto/etc
#presto配置文件
#mkdir -p /data/presto 
#數據盤
vim /opt/cloudera/parcels/presto/etc/node.properties
node.environment=presto
node.id=presto-cdh01
node.data-dir=/data/presto
配置說明:
node.environment:集羣名稱。全部在同一個集羣中的Presto節點必須擁有相同的集羣名稱。
node.id:每一個Presto節點的惟一標示。每一個節點的node.id都必須是惟一的。在Presto進行重啓或者升級過程當中每一個節點的node.id必須保持不變。若是在一個節點上安裝多個Presto實例(例如:在同一臺機器上安裝多個Presto節點),那麼每一個Presto節點必須擁有惟一的node.id。
node.data-dir:數據存儲目錄的位置(操做系統上的路徑)。Presto將會把日期和數據存儲在這個目錄下。
3.1.9Presto的jvm配置文件
配置Presto的JVM參數,建立jvm.config文件
vim /opt/cloudera/parcels/presto/etc/jvm.config
-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
#配置文件的格式是:一系列的選項,每行配置一個單獨的選項。因爲這些選項不在shell命令中使用。所以即便將每一個選項經過空格或者其餘的分隔符分開,java程序也不會將這些選項分開,而是做爲一個命令行選項處理。(就想下面例子中的OnOutOfMemoryError選項)。
因爲OutOfMemoryError將會致使JVM處於不一致狀態,因此遇到這種錯誤的時候咱們通常的處理措施就是將dump headp中的信息(用於debugging),而後強制終止進程。
Presto會將查詢編譯成字節碼文件,所以Presto會生成不少class,所以咱們咱們應該增大Perm區的大小(在Perm中主要存儲class)而且要容許Jvm class unloading。
3.1.10建立config.properties文件
該配置文件包含了Presto Server的全部配置信息。每一個Presto Server既是Coordinator也是一個Worker。在大型集羣中,處於性能考慮,建議單獨用一臺服務器做爲Coordinator。
coordinator節點的配置以下:
Presto會將查詢編譯成字節碼文件,所以Presto會生成不少class,所以咱們咱們應該增大Perm區的大小(在Perm中主要存儲class)而且要容許Jvm class unloading。
vim /opt/cloudera/parcels/presto/etc/coordinator-config.properties 
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=6660
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://incubator-t3-dc-001:6660
worker節點的配置以下:
vim /opt/cloudera/parcels/presto/etc/worker-config.properties 
coordinator=false
http-server.http.port=6660
query.max-memory=4GB
query.max-memory-per-node=1GB
discovery.uri=http://incubator-t3-dc-001:6660

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
配置項說明:
coordinator:指定是否運維Presto實例做爲一個coordinator(接收來自客戶端的查詢情切管理每一個查詢的執行過程)。
node-scheduler.include-coordinator:是否容許在coordinator服務中進行調度工做。對於大型的集羣,在一個節點上的Presto server即做爲coordinator又做爲worke將會下降查詢性能。由於若是一個服務器做爲worker使用,那麼大部分的資源都不會被worker佔用,那麼就不會有足夠的資源進行關鍵任務調度、管理和監控查詢執行。
http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP進行內部和外部的全部通信。
discovery.uri:Discoveryserver的URI。因爲啓用了Prestocoordinator內嵌的Discovery 服務,所以這個uri就是Prestocoordinator的uri。修改example.net:80,根據你的實際環境設置該URI。注意:這個URI必定不能以「/「結尾。

3.1.11新建日誌文件log.properties
vim /opt/cloudera/parcels/presto/etc/log.properties
com.facebook.presto=INFO
3.1.12重命名config文件
主節點
/opt/cloudera/parcels/presto/etc/
mv coordinator-config.properties config.properties
work節點
cd /opt/cloudera/parcels/presto/etc/
mv worker-config.properties config.properties

3.1.13Presto服務啓停
/opt/cloudera/parcels/presto/bin/launcher start
#啓動
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
/opt/cloudera/parcels/presto/bin/launcher stop
中止

3.1.14Presto-web
http://172.16.16.241/ui/

3.2 presto集成hive

1.在Presto集羣的全部節點建立目錄
mkdir -p /opt/cloudera/parcels/presto/etc/catalog
2.建立hive.properties,該文件與Hive服務集成使用

vim /opt/cloudera/parcels/presto/etc/catalog/hive.properties 
connector.name=hive-hadoop2
hive.metastore.uri=thrift://incubator-t3-dc-003:9083

大數據PAZR集成ldap實操!what?
3.修改presto的jvm.config,在配置文件中增長Presto訪問HDFS的用戶名

vim /opt/cloudera/parcels/presto/etc/jvm.config
添加-DHADOOP_USER_NAME=presto

大數據PAZR集成ldap實操!what?
4.上面的配置中指定了presto用戶做爲訪問HDFS的用戶,須要在集羣全部節點添加presto用戶
useradd presto
大數據PAZR集成ldap實操!what?
修改完後重啓presto
/opt/cloudera/parcels/presto/bin/launcher restart(全部集羣機器執行)
大數據PAZR集成ldap實操!what?

3.3 Presto集成hive測試

這裏測試Presto與Hive的集成使用Presto提供的Presto CLI,該CLI是一個可執行的JAR文件,也意味着你能夠想UNIX終端窗口同樣來使用CLI。
1.下載Presto的presto-cli-0.226-executable.jar,並重命名爲presto並賦予能夠執行權限
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.226/presto-cli-0.226-executable.jar
2.複製客戶端到全部主機上
scp -r -P53742 /home/t3cx/presto-cli-0.226-executable.jar root@incubator-t3-dc-005:/opt/cloudera/parcels/presto/etc/
3.複製客戶端到全部主機上
cd /opt/cloudera/parcels/presto/etc/
mv presto-cli-0.226-executable.jar presto
chmod +x presto

大數據PAZR集成ldap實操!what?

3.集羣啓用了Sentry,這裏咱們使用presto用戶訪問Hive因此爲presto用戶受權default庫的全部權限

4.Hive建立角色並受權
#beeline
#!connect jdbc:hive2://incubator-t3-dc-001:10000/;user=hive;password=****
create role presto;
grant role presto to group presto;
grant ALL on database default to role presto;
5.impala建立角色並受權
su hive
#impala-shell -i incubator-t3-dc-002
create role presto;
grant role presto to group presto;
grant ALL on database default to role presto;
執行查詢語句
[root@incubator-t3-dc-001 etc]# ./presto --server localhost:6660 --catalog hive --schema=default

大數據PAZR集成ldap實操!what?

3.4 Presto集成kudu測試

添加kudu配置分發到全部節點上面
# vim /opt/cloudera/parcels/presto/etc/catalog/kudu.properties
connector.name=kudu
kudu.client.master-addresses=incubator-t3-dc-001:7051,incubator-t3-dc-002:7051,incubator-t3-dc-003:7051
#重啓服務
/opt/cloudera/parcels/presto/bin/launcher restart
#驗證kudu
select * from kudu.default."default.test_kudu_table"

3.5 Presto集成ldap

#apacheds安裝ldaps

groupadd apacheds
#添加用戶組
useradd -s /bin/sh -g apacheds apacheds
添加用戶
wget http://mirrors.ocf.berkeley.edu/apache//directory/apacheds/dist/2.0.0.AM25/apacheds-2.0.0.AM25-64bit.bin
#下載受權
chmod +x apacheds-2.0.0.AM25-64bit.bin
./apacheds-2.0.0.AM25-64bit.bin
#啓動
/etc/init.d/apacheds-2.0.0.AM25-default start
[root@incubator-t3-dc-002 presto_hue]# netstat -anplt |grep 10389
tcp        0      0 0.0.0.0:10389           0.0.0.0:*               LISTEN      24770/java

#配置用戶名和密碼,ip地址
設置用戶名密碼,默認:user:uid=admin,ou=system password:secret
#鏈接客戶端
配置客戶端遠程登陸,這裏使用Apache Directory Studio,配置界面以下
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
打開配置-添加分區
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
Ctrl+S保存
重啓服務

[root@incubator-t3-dc-002 presto_hue]# /etc/init.d/apacheds-2.0.0.AM25-default restart
Stopping ApacheDS - default...
Stopped ApacheDS - default.
Starting ApacheDS - default...
[root@incubator-t3-dc-002 presto_hue]#

大數據PAZR集成ldap實操!what?
添加組
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
添加
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
#添加用戶
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

#啓用ldaps
cd /var/lib/apacheds-2.0.0.AM25/default/conf/
密碼:t3CDH123!
/opt/jdk1.8.0_181/bin/keytool  -genkeypair -alias apacheds -keyalg RSA -validity 7 -keystore ads.keystore
chown apacheds:apacheds ./ads.keystore
#配置apacheds.cer
/opt/jdk1.8.0_181/bin/keytool  -export -alias apacheds -keystore ads.keystore -rfc -file apacheds.cer
#默認口令
changeit
## 將證書導入系統證書庫,實現自認證,這裏的密鑰庫口令是默認的: /opt/jdk1.8.0_181/bin/keytool  -import -file apacheds.cer -alias apacheds -keystore /usr/java/jdk1.8.0_181-cloudera/jre/lib/security/cacerts

#配置證書
/var/lib/apacheds-2.0.0.AM25/default/conf/ads.keystore

/etc/init.d/apacheds-2.0.0.AM25-default restart
配置客戶端

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

#測試presto-ldaps
cd /data/presto-server-0.228/etc
/opt/jdk1.8.0_181/bin/keytool -genkeypair -alias presto -keyalg RSA -keystore presto.jks
修改config.properties,添加
http-server.authentication.type=PASSWORD
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/data/presto-server-0.228/etc/presto.jks
http-server.https.keystore.key=t3CDH123!

# vi password-authenticator.properties
password-authenticator.name=ldap
ldap.url=ldaps://172.16.16.246:10636
ldap.user-bind-pattern=uid=${USER},ou=people,dc=t3,dc=hadoop
ldap.user-base-dn=dc=t3,dc=hadoop

3.6 Alluxio 內存存儲系統部署安裝

下載並解壓
wget https://downloads.alluxio.io/downloads/files/2.0.1/alluxio-2.0.1-bin.tar.gz
cp conf/alluxio-site.properties.template conf/alluxio-site.properties

拷貝軟件到全部節點

scp -r -P53742 /opt/cloudera/parcels/alluxio/ root@incubator-t3-dc-002:/opt/cloudera/parcels/

cd /opt/cloudera/parcels/alluxio/alluxio-2.0.1
cp conf/alluxio-site.properties.template conf/alluxio-site.properties

修改配置(集羣全部機器)

vim alluxio-site.properties
alluxio.master.hostname=172.16.16.241

vim alluxio-site.properties
更新conf/alluxio-site.properties中的alluxio.master.hostname爲你將運行Alluxio Master的機器的主機名。添加全部worker節點的IP地址到conf/workers文件
alluxio.home=/opt/cloudera/parcels/alluxio/alluxio-2.0.1
alluxio.work.dir=/opt/cloudera/parcels/alluxio/alluxio-2.0.1
alluxio.conf.dir=${alluxio.home}/conf
alluxio.logs.dir=${alluxio.home}/logs
alluxio.master.mount.table.root.ufs=hdfs://incubator-t3-dc-001:8020/alluxio
#hdfs掛載地址
alluxio.metrics.conf.file=${alluxio.conf.dir}/metrics.properties
alluxio.master.hostname=incubator-t3-dc-001
alluxio.underfs.address=hdfs://incubator-t3-dc-001:8020/alluxio
alluxio.underfs.hdfs.configuration=/etc/hadoop/conf/core-site.xml
alluxio.master.bind.host=172.16.16.241
alluxio.master.journal.folder=/opt/cloudera/parcels/alluxio/alluxio-2.0.1/journal
alluxio.master.web.bind.host=172.16.16.241
alluxio.master.web.hostname=incubator-t3-dc-001
alluxio.master.web.port=6661
alluxio.worker.bind.host=0.0.0.0
alluxio.worker.memory.size=2048MB
alluxio.worker.tieredstore.levels=1
alluxio.worker.tieredstore.level0.alias=MEM
alluxio.worker.tieredstore.level0.dirs.path=/mnt/ramdisk
JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
alluxio.user.network.netty.timeout.ms=600000
alluxio.master.security.impersonation.presto.users=*

#scp全部機器
scp -r -P53742 alluxio-site.properties root@incubator-t3-dc-002:/opt/cloudera/parcels/alluxio/alluxio-2.0.1/conf/
scp -r -P53742 alluxio-masters.sh alluxio-workers.sh alluxio-start.sh root@incubator-t3-dc-002:/opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

vim workers
172.16.16.246
172.16.16.250
172.16.16.242
172.16.16.249

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

cp -rf alluxio-env.sh.template alluxio-env.sh
vim alluxio-env.sh(全部機器)
#添加
export ALLUXIO_SSH_OPTS="-p 53742"
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera

大數據PAZR集成ldap實操!what?

cd /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin
vim alluxio-masters.sh
添加-p 53742
cd /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin
vim alluxio-workers.sh
搜索ssh
添加-p 53742

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

[root@incubator-t3-dc-001 bin]# ln -s /opt/jdk1.8.0_181/bin/java /usr/bin/java
[root@incubator-t3-dc-001 bin]# /usr/bin/java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@incubator-t3-dc-001 bin]# 

./alluxio format
報錯須要在全部節點
建立mkdir -p /mnt/ramdisk/alluxioworker
若是不建立會報以下錯誤。

大數據PAZR集成ldap實操!what?

初始化alluxio
大數據PAZR集成ldap實操!what?

cd /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin
[root@incubator-t3-dc-001 bin]# ./alluxio format
Executing the following command on all worker nodes and logging to /opt/cloudera/parcels/alluxio/alluxio-2.0.1/logs/task.log: /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin/alluxio formatWorker
Waiting for tasks to finish...
All tasks finished
Executing the following command on all master nodes and logging to /opt/cloudera/parcels/alluxio/alluxio-2.0.1/logs/task.log: /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin/alluxio formatJournal
Waiting for tasks to finish...
All tasks finished

啓動alluxio

./alluxio-start.sh all NoMountalluxio-start.sh
./alluxio-start.sh all SudoMount
http://172.16.16.241:6661/overview

測試

[root@incubator-t3-dc-001 bin]# echo "1.txt">1.txt
[root@incubator-t3-dc-001 bin]# ll
total 68
-rw-r--r-- 1 root root      6 Oct 14 20:27 1.txt
-rwxrwxrwx 1  501 games 11808 Oct 12 14:35 alluxio
-rwxrwxrwx 1  501 games  2758 Oct 12 14:38 alluxio-masters.sh
-rwxrwxrwx 1  501 games  9668 Oct 14 20:06 alluxio-monitor.sh
-rwxrwxrwx 1  501 games  5591 Aug 23 12:52 alluxio-mount.sh
-rwxrwxrwx 1  501 games 18761 Oct 14 20:06 alluxio-start.sh
-rwxrwxrwx 1  501 games  3806 Aug 23 12:52 alluxio-stop.sh
-rwxrwxrwx 1  501 games  2128 Oct 14 19:48 alluxio-workers.sh
[root@incubator-t3-dc-001 bin]# chmod 777 1.txt 
[root@incubator-t3-dc-001 bin]# ./alluxio fs copyFromLocal 1.txt /
Copied file:///opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin/1.txt to /
上傳文件到alluxio
cd /opt/cloudera/parcels/alluxio/alluxio-2.0.1/bin
#alluxio文件固化到HDFS
./alluxio fs persist /1.txt
hadoop fs -ls /alluxio

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

3.7 Alluxio 集成presto

在hive-core-site.xml添加

在hive-core-site.xml添加
配置core-site.xml
你須要向你的hive.properties指向的core-site.xml中添加如下配置項:
<property>  
<name>fs.alluxio.impl</name>  <value>alluxio.hadoop.FileSystem</value>
</property>
<property>  
<name>fs.AbstractFileSystem.alluxio.impl</name>  <value>alluxio.hadoop.AlluxioFileSystem</value>  
<description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description>
</property>

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

hive-site.xml 
<property>
<name>alluxio.user.file.writetype.default</name>  <value>CACHE_THROUGH</value>
</property>

修改jvm.properties
修改alluxio-site.properties
另外,你也能夠將alluxio-site.properties的路徑追加到Presto JVM配置中,該配置在Presto目錄下的etc/jvm.config文件中。該方法的好處是隻需在alluxio-site.properties配置文件中設置全部Alluxio屬性。
-Xbootclasspath/p:/opt/cloudera/parcels/alluxio/alluxio-2.0.1/
#全部work節點必須添加
此外,咱們建議提升alluxio.user.network.netty.timeout.ms的值(好比10分鐘),來防止讀異地大文件時的超時問題。

Create a Hive table on Alluxio
Create a Hive table on Alluxio
Here is an example to create an internal table in Hive backed by files in Alluxio. You can download a data file (e.g., ml-100k.zip) from http://grouplens.org/datasets/movielens/. Unzip this file and upload the file u.user into /ml-100k/ on Alluxio:

# ./bin/alluxio fs mkdir /ml-100k
Successfully created directory /ml-100k
# ./bin/alluxio fs copyFromLocal /opt/cloudera/parcels/alluxio/alluxio-2.0.1/ml-100k/u.user alluxio://incubator-t3-dc-001:19998/ml-100k
Copied file:///opt/cloudera/parcels/alluxio/alluxio-2.0.1/ml-100k/u.user to alluxio://incubator-t3-dc-001:19998/ml-100k
Hive create table
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> CREATE TABLE u_user (
    > userid INT,
    > age INT,
    > gender CHAR(1),
    > occupation STRING,
    > zipcode STRING)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '|'
    > LOCATION 'alluxio://incubator-t3-dc-001:19998/ml-100k';
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.RuntimeException: java.lang.ClassNotFoundException: Class alluxio.hadoop.FileSystem not found)

集成hive

#第一步環境變量
export HIVE_AUX_JARS_PATH=/opt/cloudera/parcels/alluxio/alluxio-2.0.1/client/alluxio-2.0.1-client.jar:${HIVE_AUX_JARS_PATH}
#拷貝java路徑
cp -rf /opt/cloudera/parcels/alluxio/alluxio-2.0.1/client/alluxio-2.0.1-client.jar /opt/cloudera/parcels/CDH/lib/hive/lib
#權限
chmod 777 /opt/cloudera/parcels/CDH/lib/hive/lib/alluxio-2.0.1-client.jar
重啓hive服務
集成hdfs
# cp -rf /opt/cloudera/parcels/alluxio/alluxio-2.0.1/client/alluxio-2.0.1-client.jar /opt/cloudera/parcels/CDH/lib/hadoop-hdfs/lib/
[root@incubator-t3-dc-001 lib]# chmod 777 /opt/cloudera/parcels/CDH/lib/hadoop-hdfs/lib/alluxio-2.0.1-client.jar
重啓hdfs服務

測試hive集成

#切換hive用戶
cubator-t3-dc-001:19998, Error: alluxio.exception.status.UnauthenticatedException: Plain authentication failed: Failed to authenticate client user="hive" connecting to Alluxio server and impersonating as impersonationUser="root" to access Alluxio file system. User "hive" is not configured to allow any impersonation. Please read the guide to configure impersonation at https://docs.alluxio.io/os/user/2.0/en/advanced/Security.html)
su hive
從新建立表
hive> CREATE TABLE u_user (
    > userid INT,
    > age INT,
    > gender CHAR(1),
    > occupation STRING,
    > zipcode STRING)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY '|'
    > LOCATION 'alluxio://incubator-t3-dc-001:19998/ml-100k';

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

#建立表
create EXTERNAL table rating_alluxio(
userId INT,movieId INT,
rating FLOAT,
timestamps STRING)
row format delimited fields terminated by ','
LOCATION 'alluxio://incubator-t3-dc-001:19998/ml-100k';

使用presto查詢表

須要關聯java包,不然會報錯
使用 Presto 查詢表,關聯java包,重啓服務
cp -rf /opt/cloudera/parcels/alluxio/alluxio-2.0.1/client/alluxio-2.0.1-client.jar /opt/cloudera/parcels/presto/lib/
chmod 777 /opt/cloudera/parcels/presto/lib/alluxio-2.0.1-client.jar
#複製客戶端到presto-hive裏面
複製Alluxio client jar 
cp -rf /opt/cloudera/parcels/alluxio/alluxio-2.0.1/client/alluxio-2.0.1-client.jar /opt/cloudera/parcels/presto/plugin/hive-hadoop2/
重啓presto
/opt/cloudera/parcels/presto/bin/launcher restart
#查詢表
 ./presto --server localhost:6660 --execute "use default;select * from u_user limit 10;" --catalog hive --debug

text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
Failed to authenticate client user="root" connecting to Alluxio server and impersonating as impersonationUser="presto" to access Alluxio file system.
#master機器
vim alluxio/alluxio-2.0.1/conf/alluxio-site.properties
alluxio.master.security.impersonation.root.users=*
#添加用戶到site裏面而後重啓alluxio服務
徹底禁用客戶端模擬機制。這就須要將客戶端配置參數(不在服務器上)做以下設置:
alluxio.security.login.impersonation.username=NONE
正確顯示

4.1Zeppelin

Apache Zeppelin 是一個讓交互式數據分析變得可行的基於網頁的開源框架。Zeppelin提供了數據分析、數據可視化等功能。
Zeppelin 是一個提供交互數據分析且基於Web的筆記本。方便你作出可數據驅動的、可交互且可協做的精美文檔,而且支持多種語言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell。

4.2 zeppelin部署

在機器上安裝zeppelin

#zeppelin安裝
cd /opt/cloudera/parcels/zeppelin
tar zxvf zeppelin-0.8.2-bin-all.tgz
#修改端口
vim /opt/cloudera/parcels/zeppelin/zeppelin-0.8.2-bin-all/conf/zeppelin-env.sh
export ZEPPELIN_PORT=80
export ZEPPELIN_ADDR=172.16.16.241
禁止匿名登錄
[root@incubator-t3-dc-001 conf]# cp -rf shiro.ini.template shiro.ini
[root@incubator-t3-dc-001 conf]# cp -rf zeppelin-site.xml.template zeppelin-site.xml
vim zeppelin-site.xml
#禁止匿名登陸
修改zeppelin.anonymous.allowed屬性爲false
<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>false</value>
  <description>Anonymous user allowed by default</description>
</property>

集成ldap

#配置ldap
vim shiro.ini
[main]
ldapRealm=org.apache.zeppelin.realm.LdapRealm
ldapRealm.contextFactory.authenticationMechanism=simple
ldapRealm.contextFactory.url=ldap://172.16.16.245:389
ldapRealm.userDnTemplate=uid={0},ou=People,dc=t3,dc=com
ldapRealm.pagingSize = 200
ldapRealm.authorizationEnabled=true
ldapRealm.searchBase= dc=t3,dc=com
ldapRealm.userSearchBase = ou=People,dc=t3,dc=comd
ldapRealm.groupSearchBase = ou=group,dc=t3,dc=com
ldapRealm.groupObjectClass= posixGroup
ldapRealm.userLowerCase = true
ldapRealm.userSearchScope = subtree;
ldapRealm.groupSearchScope = subtree;
ldapRealm.contextFactory.systemUsername= cn=Manager,dc=t3,dc=com
ldapRealm.contextFactory.systemPassword= CFXZ6EU3bCpIMFpFZX0LqjEq
ldapRealm.groupSearchEnableMatchingRuleInChain = true
ldapRealm.rolesByGroup = group: admin
#關聯組合admin角色
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = JSESSIONID
cookie.httpOnly = true
sessionManager.sessionIdCookie = $cookie

securityManager.sessionManager = $sessionManager
securityManager.sessionManager.globalSessionTimeout = 86400000
shiro.loginUrl = /api/login

[roles]
role1 = *
role2 = *
role3 = *
admin = *

[urls]
/api/version = anon
/api/interpreter/setting/restart/** = authc
/api/interpreter/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
#/** = anon
/** = authc

Ldap和用戶認證只能二選一
#權限認證
其中的[users]部分,即登陸時的帳號。等號前是用戶名,等號後是密碼,逗號後是用戶的角色。帳號能夠不定義角色,也能夠定義多個角色。
好比用戶名user1,對應密碼password2,擁有角色role1和role2。

[users]
admin = t, admin
bi_wkx = bi_wkx, read, write
bi_ch = bi_ch, read, write
bi_fyc = bi_fyc read, write

[roles]配置用戶的角色,[urls]部分配置不一樣web接口的認證方式和須要的角色,
/表示任意路徑,驗證時按照定義順序匹配,因此/通常放在最後一行。
好比,下面的配置定義了4種角色。接口version驗證方式anon,即不須要驗證,不用登陸就能訪問。
接口interperter須要表格形式的驗證,且用戶具備admin角色才能訪問。/** = authc表示其餘接口只須要登陸驗證便可訪問,
不須要用戶有額外的角色。

[roles]
admin = *
read = *
write = *

[urls]
# anon means the access is anonymous.
# authcBasic means Basic Auth Security
# authc means Form based Auth Security
/api/version = anon
/api/interpreter/** = authc, roles[admin]
/api/credentail/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/** = authc
重啓服務
sh ../bin/zeppelin-daemon.sh restart

集成zeppelin各插件

#zeppelin配置hive
配置文件vim zeppelin-env.sh:在文件末尾添加如下配置,根據本身的路徑設置。
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export MASTER=yarn-client
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export IMPALA_HOME=/opt/cloudera/parcels/CDH/lib/impala
export HADOOP_CONF_DIR=/etc/hadoop/conf
export ZEPPELIN_LOG_DIR=/opt/cloudera/parcels/zeppelin/zeppelin-0.8.2-bin-all/log
export ZEPPELIN_PID_DIR=/opt/cloudera/parcels/zeppelin/zeppelin-0.8.2-bin-all/run/
export ZEPPELIN_WAR_TEMPDIR=/var/tmp/zeppelin

#配置zeppelin 頁面
common.max_count    1000
hive.driver    org.apache.hive.jdbc.HiveDriver
hive.password    hive
hive.url    jdbc:hive2://incubator-t3-dc-003:10000
hive.user    hive
zeppelin.interpreter.localRepo    /opt/cloudera/parcels/zeppelin/zeppelin-0.8.2-bin-all/local-repo/helium-registry-cache
zeppelin.interpreter.output.limit    102400
zeppelin.jdbc.auth.type
zeppelin.jdbc.concurrent.max_connection    10
zeppelin.jdbc.concurrent.use    true
zeppelin.jdbc.keytab.location
zeppelin.jdbc.principal

Dependencies
 artifact exclude
 org.apache.hive:hive-jdbc:2.1.1  hive-jdbc-2.1.1-cdh6.3.0.jar
 org.apache.hadoop:hadoop-common:3.0.0  hadoop-common-3.0.0-cdh6.3.0.jar
 mysql:mysql-connector-java:5.1.47   mysql-connector-java-5.1.47.jar

大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
新建一個做業進行測試

notebook --> Create new node填寫名稱,選擇hive便可
輸入查詢語句,注意查詢語句前須要有前綴(hive):
%hive
select * from test limit 10
語句末尾不能加分號,否則會有錯誤。
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
#python集成
%python
import sys
sys.version
語句末尾不能加分號,否則會有錯誤。
大數據PAZR集成ldap實操!what?
#impala

新建;jdbc_impala
default.driver = org.apache.hive.jdbc.HiveDriver
default.url = jdbc:hive2://incubator-t3-dc-003:21050/default;auth=noSasl(驗證模式是NOSASL才能正常使用impala,可是這個會讓impala查詢數據時,跳過rander中設置的掩碼規則)
default.user = zeppelin
url 的 NOSASL模式須要任意一個用戶名(如Hive),不須要密碼,不填寫用戶名會報錯。
Dependencies
 artifact exclude
 org.apache.hive:hive-jdbc:2.1.1  hive-jdbc-2.1.1-cdh6.3.0.jar
 org.apache.hadoop:hadoop-common:3.0.0  hadoop-common-3.0.0-cdh6.3.0.jar
 mysql:mysql-connector-java:5.1.47   mysql-connector-java-5.1.47.jar
 #impala測試
 %impala
select * from nation limit 10

#spark

local[*] in local mode
yarn-client in Yarn client mode
yarn-cluster in Yarn cluster mode

大數據PAZR集成ldap實操!what?
#修改hdfs參數
dfs.permissions.superusergroup=supergroup,root
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?
%sql
show databases

#presto

presto %jdbc (default)
%presto
select * from kudu.default."default.test_kudu_table" limit 10

Option Shared
Properties
name    value
default.driver  com.facebook.presto.jdbc.PrestoDriver
default.url     jdbc:presto://172.16.16.241:6660
default.user    root
default.passwd  密碼
zeppelin.jdbc.concurrent.max_connection     10
zeppelin.jdbc.concurrent.use    true

Dependencies
artifact    exclude
com.facebook.presto:presto-jdbc:0.170

cd /opt/cloudera/parcels/zeppelin/zeppelin-0.8.2-bin-all/interpreter/jdbc
rz presto-jdbc-0.226.jar

大數據PAZR集成ldap實操!what?

5.1 rancher

Rancher是一個開源的企業級容器管理平臺。經過Rancher,企業不再必本身使用一系列的開源軟件去從頭搭建容器服務平臺。Rancher提供了在生產環境中使用的管理Docker和Kubernetes的全棧化容器部署與管理平臺。

爲何須要Rancher
在原來, 若是咱們須要作一個分佈式集羣咱們須要學習一全套的框架並編碼實現如 服務發現, 負載均衡等邏輯, 給開發者形成很大的負擔, 不過好在如今有Docker以及他周邊的一些技術能在上層解決這些問題, 而應用該怎麼開發就怎麼開發.

當你選擇使用Docker技術棧的時候, 會發如今生產環境中不光光是 docker run就能解決的. 還須要考慮好比docker之間的組網, 縮擴容等問題, 因而你去學習kubernetes, 發現好像有點複雜啊, 有沒有更傻瓜化一點的? 那就是rancher了.

5.2 rancher部署zeppelin

#安裝docker
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
yum list docker-ce --showduplicates | sort -r 
sudo yum install docker-ce-17.12.0.ce-1.el7.centos
docker version
docker pull rancher/server
netstat -anplt | grep 8000

# Error starting daemon: error initializing graphdriver: devmapper: Base Device UUID and Filesystem veri(報錯)
systemctl stop docker   (中止docker 服務)
dmsetup udevcomplete_all (釋放未完成的磁盤操做)
sudo rm -rf  /var/lib/docker/* (清空docker 數據)
* reboot  (注:當有鏡像或容器文件刪除不了時,重啓服務器)
systemctl start docker  (重啓docker服務)

如下是建立數據庫和數據庫用戶的SQL命令例子
#建立rancher數據庫
CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
啓動一個Rancher鏈接一個外部數據庫,你須要在啓動容器的命令中添加額外參數。

#啓動rancher
docker run -d --restart=unless-stopped -p 80:8080 rancher/server \
--db-host incubator-t3-dc-001 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle

docker search nginx
docker pull docker.io/nginx
docker images

#啓動rancher
docker run --name rancher -d -p 80:8080 rancher/server
docker start 9b04ff050ddd

爲了安全能夠給Rancher配置登陸帳號(選擇 系統管理  --》訪問控制  --》LOCAL)-添加本地帳號
管理員 admin   admin

#安裝zeppelin
docker pull apache/zeppelin:0.8.2
docker volume create zeppelin-logs
docker volume create zeppelin-notebook

3.啓動zeppelin
docker run -d -p 80:8081 \
-v zeppelin-logs:/logs \
-v  zeppelin-notebook:/notebook \
--env HOST_IP=0.0.0.0 \
--env ZEPPELIN_LOG_DIR='/logs' \
--env ZEPPELIN_NOTEBOOK_DIR='/notebook' \
--volume /etc/localtime:/etc/localtime \
--restart=always \
--name zeppelin  apache/zeppelin:0.8.2

5.3 rancher集成ldap認證

http://172.16.16.241/admin/access/openldap
設置ldap用戶
大數據PAZR集成ldap實操!what?
大數據PAZR集成ldap實操!what?

組:ou=Group,dc=t3,dc=com
用戶:ou=People,dc=t3,dc=com
域:172.16.16.245
端口:389
#設置
常規
服務器: 172.16.16.245:389
TLS: No
服務帳號: cn=Manager,dc=t3,dc=com
Connection Timeout: 1000毫秒
用戶
搜索起點: ou=People,dc=t3,dc=com
對象分類: posixAccount
登陸字段: uid
名稱字段: givenName
搜索字段: uid
啓用字段:

大數據PAZR集成ldap實操!what?
必須建立api
大數據PAZR集成ldap實操!what?
到此實戰結束。

大數據運維更多技巧和技術

CDH+Ambari實戰
帶你搞定大數據運維
詳情在《大數據安全運維實戰》
大數據安全運維實戰
掃碼加入大數據運維你們庭共同窗習進步。
大數據PAZR集成ldap實操!what?

學習專欄你能收穫什麼?

專欄以CDH和ambari二個大數據平臺爲主,內容全都是筆者多年的工做中提煉出來的,不只包含了大數據的基本知識,最主要的是大數據安全維領域的常見案例和實戰技巧,藉以本專欄分享給你們,但願你們經過學習,可以解決在平常工做中所遇到的問題,提升本身的工做效率,收穫滿滿。

最後的最後,但願每個學習我專欄的小夥伴,可以轉型成功,升職加薪!

相關文章
相關標籤/搜索