Hadoop_Kerberos構成プロセスレコード
13127 ワード
addprinc -randkey hadoop/[email protected]
addprinc -randkey hadoop/[email protected]
addprinc -randkey hadoop/[email protected]
addprinc -randkey HTTP/[email protected]
addprinc -randkey HTTP/[email protected]
addprinc -randkey HTTP/[email protected]
を生成する②kerberosコマンドラインを終了し、rootユーザで各インスタンスに鍵kadmin.local -q "xst -k hadoop.keytab hadoop/[email protected]"
kadmin.local -q "xst -k hadoop.keytab hadoop/[email protected]"
kadmin.local -q "xst -k hadoop.keytab hadoop/[email protected]"
kadmin.local -q "xst -k HTTP.keytab HTTP/[email protected]"
kadmin.local -q "xst -k HTTP.keytab HTTP/[email protected]"
kadmin.local -q "xst -k HTTP.keytab HTTP/[email protected]"
, keytab root 。
を生成する③rootコマンドラインにhadoopをマージする.keytabとHTTPkeytabはhdfsです.keytab. ktutil
rkt hadoop.keytab
rkt HTTP.keytab
wkt hdfs.keytab
hdfs.keytabファイルは/home/hadoop/ディレクトリにコピーされます.hadoopの各ノードに配布します.④注意a.ホスト名は必ず小文字にし、kinitでTGT手形を申請するとkerberosは大文字小文字にかかわらず小文字と見なして手形を生成します.インスタンスが大文字ホスト名の場合、kerberosライブラリ内の対応するインスタンスは手形を生成できません.b.hadoop/namenode、その中のnamenodeはただ1つのフラグとして、このhadoopユーザーと別のhadoopユーザーが異なるホストに属していることを表しています.すべて、hostnameが大文字の場合、ここでは小文字を入力する必要があります.
hadoop.security.authentication
kerberos
hadoop.security.authorization
true
以上の構成は、セキュリティ認証機能をオンにし、kerberos認証を採用することを示す.②hdfs-siteを修正する.xml
dfs.block.access.token.enable
true
dfs.https.enable
true
dfs.https.policy
HTTPS_ONLY
dfs.namenode.https-address.pin-cluster1.namenode
namenode:50470
dfs.https.port
50470
dfs.namenode.keytab.file
/home/hadoop/hdfs.keytab
dfs.namenode.kerberos.principal
hadoop/[email protected]
dfs.namenode.kerberos.internal.spnego.principal
HTTP/[email protected]
dfs.datanode.data.dir.perm
700
dfs.datanode.address
0.0.0.0:1004
dfs.datanode.http.address
0.0.0.0:1006
dfs.datanode.keytab.file
/home/hadoop/hdfs.keytab
dfs.datanode.kerberos.principal
hadoop/[email protected]
dfs.journalnode.keytab.file
/home/hadoop/hdfs.keytab
dfs.journalnode.kerberos.principal
hadoop/[email protected]
dfs.journalnode.kerberos.internal.spnego.principal
HTTP/[email protected]
dfs.web.authentication.kerberos.principal
HTTP/[email protected]
dfs.web.authentication.kerberos.keytab
/home/hadoop/hdfs.keytab
以上は主にkerberosインスタンスとkeytabの格納場所を構成している.③yarn-siteを修正する.xml
yarn.resourcemanager.keytab
/home/hadoop/hdfs.keytab
yarn.resourcemanager.principal
hadoop/[email protected]
yarn.nodemanager.keytab
/home/hadoop/hdfs.keytab
yarn.nodemanager.principal
hadoop/[email protected]
yarn.nodemanager.container-executor.class
org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor
yarn.nodemanager.linux-container-executor.group
hadoop
yarn.https.policy
HTTPS_ONLY
④mapred-siteを修正する.xml
mapreduce.jobhistory.keytab
/home/hadoop/hdfs.keytab
mapreduce.jobhistory.principal
hadoop/[email protected]
mapreduce.jobhistory.http.policy
HTTPS_ONLY
⑤zookeeperのzoo.cfgファイルに: authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
を同時にzoo.cfgが存在するファイルディレクトリの下にjaasを作成します.confファイル、 Server {
com.sun.security.auth.module.Krb5LoginModulerequired
useKeyTab=true
keyTab="/home/hadoop/hdfs.keytab"
storeKey=true
useTicketCache=false
principal="hadoop/[email protected]";
};
同時にzoo.cfgが存在するファイルディレクトリの下にjavaを作成します.Envファイル、追加: exportJVMFLAGS="-Djava.security.auth.login.config=$ZOOKEEPER_HOME/conf/jaas.conf"
注意:a.このzookeeperはhbaseが持参したものではなく、外部zookeeperを使用する必要があります.b. jaas.confのprincipalは、異なるホストに基づいて変更する必要があります.c.以上のすべてのファイルの変更はクラスタのすべてのノード⑥に同期hadoop-envを変更する必要がある.sh export HADOOP_SECURE_DN_USER=hadoop
export HADOOP_SECURE_DN_PID_DIR=/home/hadoop/pids
export HADOOP_SECURE_DN_LOG_DIR=/home/hadoop/logs
export JSVC_HOME=/home/hadoop/commons-daemon-1.0.15-src/src/native/unix/
注意:jsvcは別途インストールする必要があり、インストール手順は以下の通りである:a.commons-daemon-1.0.15-srcをダウンロードする.tar.gz b.解凍後commons-daemon-1.0.15-src/native/unix c.hadoopコマンドライン入力: sh support/buildconf.sh
./configure ( JAVA_HOME)
make
コマンドライン入力: ./jsvc -help,
d.コンパイルに成功すると現在のディレクトリの下にjsvcファイルが現れ、このファイルパスをhadoop-envに構成する.sh中⑦container-executorを修正する.cfg yarn.nodemanager.local-dirs=/home/hadoop/etc/hadoop/data
yarn.nodemanager.log-dirs=/home/hadoop/etc/hadoop/logs,
allowed.system.users=root,silence,hadoop
yarn.nodemanager.linux-container-executor.group=hadoop
# banned.users=hadoop
min.user.id=1
注意:yarn-nodemanager.local-dirsとyarn.nodemanager.log-dirsはyarn-siteとします.xmlでは構成が一致しています.min.user.idも注意してください.ここでは、コミットタスクユーザidを使用できる最小値を設定し、:idユーザ名によって、ユーザidを表示することができます.デフォルトは1000です.構成しないと、ユーザーidが1000未満の場合、タスク・レポートが間違って送信されます.ここでは1に設定.もともと1000は他のスーパーユーザーがクラスタを使用することを防止するためだった.⑧ソースコードのコンパイルは、container-executor(HADOOP_HOME/binで)がcontainer-executorを要求するためである.cfgこのファイルとそのすべての親ディレクトリはrootユーザーに属します.そうしないと、nodemanagerを起動するとエラーが発生します.プロファイルcontainer-executor.cfgデフォルトのパスはHADOOP_HOME/etc/hadoop/container-executor.cfg.デフォルトのパスですべての親ディレクトリを変更するのはrootの場合、明らかに不可能です.そこで、パスを/etc/container-executorにコンパイルする.cfgにあります.a.hadoop-2,7,2-srcソースパッケージをダウンロードして解凍し、srcディレクトリの下に入り、mvn package -Pdist,native -DskipTests -Dtar -Dcontainer-executor.conf.dir=/etc
b.hadoop-2.7.2/src/hadoop-dist/targetの下に入り、新しく生成したcontainer-executorですべてのノードの元のcontainer-executorを置き換え、すべてのノードでHADOOP_HOME/etc/hadoop下のcontainer-executor.cfgファイルは/etcにコピーされ、root:rootに権限が設定されます.binフォルダの下でstrings container-executor|grep etcを実行します.結果が../ではなく/etcの場合etcは、操作が成功したことを示します.また最も重要なのはbin下のcontainer-executorファイルの権限をroot:hadoopと4750に設定し、権限が4750でなければnodemanagerを起動する際にエラーが発生し、エラーは合理的なcontainer-executorを提供できないことである.cfgファイル.⑨起動クラスタ: bin/zkServcer.sh start
sbin/start-dfs.sh
sbin/start-secure-dns.sh ( root )
sbin/start-yarn.sh
bin/start-hbase.sh
⑩kerberosサービスの検証a.試行実行:hadoop dfs -ls
b.hadoopユーザーの下で実行:kinit -k -e /home/hadoop/hdfs.keytab hadoop/[email protected]
hadoop KDC
c.kerberosサービスの起動:sudo krb5kdc
sudo kerberos
d.再実行:hadoop dfs -ls
Server {
com.sun.security.auth.module.Krb5LoginModulerequired
useKeyTab=true
keyTab="/home/hadoop/hdfs.keytab"
storeKey=true
useTicketCache=false
principal="hadoop/[email protected]";
};
b.javaを修正する.Envファイル exportJVMFLAGS="-Djava.security.auth.login.config
=$ZOOKEEPER_HOME/conf/jaas.conf"
export JAVA_HOME="/home/hadoop/jdk8"
c.zooを修正する.cfgファイル tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
dataDir=/home/hadoop/zookeeper-3.4.6/data
server.3 =namenode:2888:3888
server.1 =datanode1:2888:3888
server.2 =datanode2:2888:3888
skipACL=yes
dataLogDir=/home/hadoop/zookeeper-3.4.6/logs
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
②HBAse構成(HBAseクラスタを先に停止)a.hbase-envを修正する.shファイルexport JAVA_HOME=/home/hadoop/jdk8
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Djava.security.auth.login.config
=/home/hadoop/hbase/conf/zk-jaas.conf"
export HBASE_MANAGES_ZK=false
b.HBAse-siteを修正する.xmlファイル
hbase.rootdir
hdfs://192.168.6.186:9000/hbase
hbase.zookeeper.quorum
namenode,datanode1,datanode2
hbase.master
namenode:60000
hbase.zookeeper.property.clientPort
2181
dfs.support.append
true
zookeeper.znode.parent
/hbase
hbase.zookeeper.property.dataDir
/home/hadoop/hbase/zookeeper
hbase.tmp.dir
/tmp/hbase
hbase.zookeeper.property.maxClientCnxns
0
zookeeper.session.timeout
1200000
hbase.rest.port
60050
hbase.replication
1
hbase.security.authorization
true
hbase.coprocessor.master.classes
org.apache.hadoop.hbase.security.access.AccessController
hbase.coprocessor.region.classes
org.apache.hadoop.hbase.security.token.TokenProvider,
org.apache.hadoop.hbase.security.access.AccessController
hbase.security.authentication
kerberos
hbase.rpc.engine
org.apache.hadoop.hbase.ipc.SecureRpcEngine
hbase.regionserver.kerberos.principal
hadoop/[email protected]
hbase.regionserver.keytab.file
/home/hadoop/hdfs.keytab
hbase.master.kerberos.principal
hadoop/[email protected]
hbase.master.keytab.file
/home/hadoop/hdfs.keytab
hbase.master.maxclockskew
1800000
Time difference of regionserver from master
c.hbase/confのjaasを変更する.confファイルClient {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/hadoop/hdfs.keytab"
storeKey=true
useTicketCache=false
principal="hadoop/[email protected]";
};
d.HBAse