我在Hadoop中是全新的。 SAS用戶之一將文件從SAS Enterprise Guide保存到Hadoop存在問題,並且我被要求檢查HDFS中的權限是否正確。以某種方式確保用戶被允許從一側移動並將其添加到另一側。 我應該在SAS服務器上檢查它?如果它是一個文件,或者我該如何檢查它?在HDFS中檢查權限
您的答案與細節將更受讚賞。
謝謝。
我在Hadoop中是全新的。 SAS用戶之一將文件從SAS Enterprise Guide保存到Hadoop存在問題,並且我被要求檢查HDFS中的權限是否正確。以某種方式確保用戶被允許從一側移動並將其添加到另一側。 我應該在SAS服務器上檢查它?如果它是一個文件,或者我該如何檢查它?在HDFS中檢查權限
您的答案與細節將更受讚賞。
謝謝。
這個問題是模糊的,但我可以提供一些建議。首先,SAS企業指南用戶應該從他的工作中得到一個結果SAS日誌,並記錄任何錯誤。
正在使用的Hadoop集羣分佈,版本,服務(例如必須安裝Knox,Sentry或Ranger安全產品)和身份驗證(Kerberos)都有所幫助。我會假設你沒有Kerberos問題,也沒有運行Knox,Sentry,Ranger等,並且你正在使用沒有Kerberos的核心hadoop。如果你需要幫助,你必須更具體。
如果連接到配置單元,並且不指定任何選項,它可能是/ user/hive/warehouse或/ user/username文件夾。
在Hadoop節點上運行以下命令來檢查HDFS中的基本權限。
hadoop fs -ls/
你應該可以看到/ tmp文件夾的權限一起,如果在/ tmp文件夾中有一個「T」在粘位設置如drwxrwxrwt結束。如果權限爲drwxrwxrwx,則不設置粘性位,這很好地消除權限問題。
如果您在/ tmp上設置了一個粘滯位,通常默認情況下,您必須對其進行遠程設置,或者在SAS程序libname中爲Hadoop集羣設置HDFS TEMP目錄。
請參閱有關LIBNAME選項以下SAS /訪問Hadoop的指南:SAS/ACCESS® 9.4 for Relational Databases: Reference, Ninth Edition | LIBNAME Statement Specifics for Hadoop
要刪除/修改的Hadoop粘位看下面的文章,或者從您的Hadoop供應商。 Configuring Hadoop Security in CDH 5 Step 14: Set the Sticky Bit on HDFS Directories。你會想做與本文相反的東西來刪除stickybit。
如果您的Hadoop集羣使用的是Kerberos然後保障每個SAS用戶多有一個有效的Kerberos去跟任何Hadoop的服務。關於Kerberos的SAS Hadoop支持頁面上有許多指南以及其他資源。用kerberos他們需要一張kerberos票,而不是用戶名或密碼。
SAS 9.4 Support For Hadoop Reference
如果不使用Kerberos,那麼你可以有或者沒有身份驗證的Hadoop的默認,或可能是一些服務,如蜂房可能會使得LDAP。
如果您沒有啓用LDAP,那麼您可以在libname語句中使用任何Hadoop用戶名連接諸如配置單元,hdfs或紗線。您不需要輸入任何密碼,並且該用戶不必是SAS用戶帳戶。這是因爲他們默認Hadoop配置不需要認證。您可以使用其他帳戶,例如您可能爲Hadoop集羣中的SAS用戶創建的帳戶。如果你這樣做,你必須在HDFS中創建一個/ user/username文件夾,方法是以HDFS超級用戶身份運行以下內容,或者在Hadoop中擁有權限,然後將所有權設置爲用戶。 Hadoop的FS -mkdir /用戶/ sasdemo Hadoop的FS -chown sasdemo:sasusers /用戶/ sasdemo 然後就可以進行檢查,以確保它與Hadoop的 FS -ls /用戶存在/ 基本上他們在他們的LIBNAME語句用戶爲準在他們的SAS程序中必須有hadoop中的用戶主文件夾。 Hadoop用戶在安裝時會默認創建一個,但您需要爲其他用戶創建它們。
如果使用的是用Hadoop LDAP(不常見的從我所看到),那麼你就必須有LDAP用戶名與在LIBNAME語句的用戶帳戶的密碼一起。我相信你可以編碼密碼,如果你喜歡。
從SAS測試與Hadoop的連接程序 您可以修改以下SAS代碼以執行基本測試,以使用SAS企業指南使用與HiveServer2的串行連接將其中一個sashelp數據集放入Hadoop。這只是一個非常基本的測試,但應該證明您可以寫入Hadoop。
libname myhive hadoop server=hiveserver.example.com port=10000 schema=default user=hive;
data myhive.cars;set sashelp.cars;run;
然後,如果你願意,你可以使用你選擇的Hadoop的客戶找到你保存它的位置,可能/用戶/蜂巢/倉庫Hadoop中的數據。 hadoop fs -ls/user/hive/warehouse
並且/或者您應該能夠運行SAS Enterprise Guide中的proc內容來顯示剛剛放入Hadoop的Hadoop Hive表的內容。 PROC目錄DATA = myhive.cars; run;
希望這會有所幫助,祝你好運!
要找到可以訪問HDFS文件的適當組,我們需要檢查Sentry。
文件ACL的描述在Sentry中,所以如果你想給/撤銷任何人的訪問權限,可以通過它來完成。
左側是文件位置,右側是組的ACL。
如果用戶不使用Sentry會怎麼樣? – franklinsijo
如果Sentry未啓用羣集,則需要手動干預。我們可以嘗試「hdfs dfs -getfacl
您是否正在尋找使用命令行或使用Hue的圖形化基於Web的用戶界面Hueop的解決方案? SAS服務器與Hadoop運行的位置相同還是連接到託管在不同節點上的Hadoop? – spijs