2017-02-13 12 views
0

私はHadoopで全く新しいです。 SASユーザーの一人がSAS Enterprise GuideからHadoopにファイルを保存する際に問題があり、適切に許可されているかどうかをHDFSで確認するように求められました。どういうわけか、ユーザーが一方の側から移動して他方の側にそれを追加できることを確認する。 SASサーバーでどこでチェックする必要がありますか?それがファイルであれば、どうすれば確認できますか?HDFSの許可を確認してください

あなたの回答は詳細になります。

ありがとうございました。

+1

HadoopのグラフィカルなWebベースのユーザーインターフェイスであるHueを使用して、コマンドラインを使用したソリューションをお探しですか? SASサーバーは、Hadoopが動作している場所と同じか、別のノードでホストされているHadoopに接続していますか? – spijs

答えて

1

この質問はあいまいですが、私はいくつかの提案をすることができます。最初に、SAS Enterprise Guideユーザーは、エラーが発生したSASログをジョブから取得する必要があります。

使用されているHadoopクラスタの配布、バージョン、サービス(たとえば、Knox、Sentry、またはRangerのセキュリティ製品を設定する必要があります)、認証(Kerberos)がすべて異なります。私はあなたがケルベロスの問題を抱えていないと仮定したり、Knox、Sentry、Ranger ectを実行していて、ケルベロスのないコアのハープを使用していると仮定します。あなたがそれらの助けを必要とする場合は、より具体的にする必要があります。

1.このためには、hadoop側の権限をチェックする必要があります。あなたは彼らがどこにデータを置いているのかを知る必要があります。これらはHDFS内のパスであり、サーバーファイルシステムではありません。

ハイブに接続してオプションを指定しないと、/ user/hive/warehouse、/ user/usernameフォルダの可能性があります。

デフォルトでは、Hadoopスティッキビットを有効にすると、ユーザはHDFSで/ tmpに書き込むことができなくなります。一部のSASプログラムは、hdfsの/ tmpフォルダに書き込んでメタデータを保存します。

Hadoopノードで次のコマンドを実行し、HDFSの基本的なアクセス許可を確認します。

hadoop fs -ls/

あなたは、/ tmpフォルダが最後に「t」を持っている場合はスティッキービットは、このようなdrwxrwxrwtとして設定されている、権限と一緒に/ tmpフォルダが表示されるはずです。パーミッションがdrwx​​rwxrwxの場合、スティッキービットは設定されません。パーミッションの問題を解消するのに適しています。

スティッキービットが/ tmpに設定されている場合は、通常はデフォルトでリモートにするか、HadoopクラスタのSASプログラムlibnameにHDFS TEMPディレクトリを設定する必要があります。

削除/次の記事を参照してHadoopのスティッキービットを変更したり、あなたのHadoopベンダーからするにSAS/ACCESS® 9.4 for Relational Databases: Reference, Ninth Edition | LIBNAME Statement Specifics for Hadoop

でlibnameにオプションについてのHadoopのガイドを次のようにSAS/ACCESSをご参照ください。 Configuring Hadoop Security in CDH 5 Step 14: Set the Sticky Bit on HDFS Directories。あなたはstickybitを削除するために、この記事の反対をしたいと思うでしょう。

2 - SAS +認証+ユーザー -

あなたのHadoopクラスタは、Kerberosを使用して固定されている場合、多くの各SASユーザーが任意のHadoopのサービスに話をするための有効なKerberosチケットを持っています。 SAS Hadoopのサポートページには、Kerberosとその他のリソースに関する多数のガイドがあります。ケルベロスでは、ユーザー名やパスワードではなく、ケルベロスチケットが必要です。

SAS 9.4 Support For Hadoop Reference

あなたは、あなたが認証なしのHadoopのデフォルトのいずれかを持つことができるのいずれか、または可能性などハイブなどの一部のサービスは、LDAPが有効になっている可能性がKerberosを使用していない場合。

LDAPを有効にしていない場合は、libnameステートメントの任意のHadoopユーザー名を使用して、hive、hdfs、またはyarnなどの接続を行うことができます。パスワードを入力する必要はなく、このユーザーはSASユーザーアカウントである必要はありません。これは、デフォルトのHadoop設定では認証を必要としないためです。 HadoopクラスタのSASユーザ用に作成したアカウントなど、別のアカウントを使用することができます。これを行う場合は、HDFSのスーパーユーザとして以下のようなものを実行するか、またはHadoopの権限を持つものを実行してユーザに所有権を設定することによって、HDFSに/ user/usernameフォルダを作成する必要があります。 のHadoop FS -mkdir /ユーザー/ sasdemo のHadoop FS -chown sasdemo:sasusers /ユーザー/ sasdemo 次に、あなたは確かにそれは彼らが彼らのlibnameに声明を持っている方のユーザー基本的に のHadoopのfs -ls /ユーザー/ に存在するためにチェックすることができます彼らのSASプログラムでは、hadoopにユーザのホームフォルダがなければなりません。 Hadoopユーザーは、インストール時にデフォルトで作成されたユーザーを持っていますが、追加のユーザー用に作成する必要があります。

HadoopでLDAPを使用している場合(私が見たものと共通するものではない)、libnameステートメントのユーザーアカウントのパスワードとともにLDAPユーザー名を取得する必要があります。私はあなたが好きならパスワードをエンコードできると信じています。

SASプログラムからHadoopへの接続のテスト 次のSASコードを変更して、SAS Enterprise Guideを使用してHiveServer2へのシリアル接続を使用してsashelpデータセットの1つを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 CONTENTS DATA = myhive.cars;実行します。

これは、幸運を助けることを願っています!

0

HDFS内のファイルにアクセスできる適切なグループを見つけるには、Sentryをチェックする必要があります。

ファイルACLはSentryに記述されているため、誰かへのアクセスを許可/取り消したい場合は、そのACLを使用して実行できます。

左側がファイルの場所、右側がグループのACLです。

+0

ユーザーがSentryを使用しない場合はどうなりますか? – franklinsijo

+0

クラスタでSentryが有効になっていない場合は、手動による介入が必要です。 "hdfs dfs -getfacl "を試して、その場所にアクセスできる人の集合を見つけることができます。 "hdfs dfs -setfacl <--set>"を使用してアクセス許可を設定できます。詳細はhttps://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html#ACLs_File_System_APIをご覧ください。 –

関連する問題