Hadoop_Kerberos構成プロセスレコード

13127 ワード

  • KDCにkerberosインスタンス1を作成するrootユーザとしてkadminを入力.localはkerberosコマンドラインに入る、kerberosデータベースにインスタンス
    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が大文字の場合、ここでは小文字を入力する必要があります.
  • hdfs集積kerberos.(クラスタを先に停止)①core_を修正site.xml
      
        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
    
  • HBAse集積kerberos①zookeeper配置a.jaasを修正する.confファイル
       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
  • を起動する
  • Hive統合kerberos