大数据平台-kerberos安装部署文档.docx_第1页
大数据平台-kerberos安装部署文档.docx_第2页
大数据平台-kerberos安装部署文档.docx_第3页
大数据平台-kerberos安装部署文档.docx_第4页
大数据平台-kerberos安装部署文档.docx_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 环境准备1.1. 操作系统本次安装部署要求在操作系统为CentOS release 6.5 (Final)的版本下进行部署,所以在安装部署kerberos之前请先确保操作系统为以上版本,并且集群中各机器已做时钟同步。本次安装部署以csdm-hadoop-04作为主kdc服务器,以csdm-hadoop-05作为从kdc服务器,以csdm-hadoop-03作为客户端。一般不建议在服务器上再安装其他应用程序,比如hadoop。但为了节省资源本次安装在这三台机器均已安装hadoop相关软件。1.2. 创建操作用户创建操作系统hdfs、yarn、mapred用户,并使其归属于hadoop用户组:adduser hdfs -g Hadoopadduser yarn -g Hadoopadduser mapred -g Hadoop1.3. 配置hosts文件为各台机器修改/etc/hosts文件,将真实ip与主机名对应配置,服务端与客户端均需配置,形如:(不能存在的配置,否则hadoop进行kerberos验证时将会出错)1.4. 关闭防火墙执行以下命令关闭防火墙:service iptables stop出现以下界面表示关闭成功1.5. 注册服务与端口的对应在/etc/service文件最后增加以下信息,以便后续使用:krb5_prop 754/tcp # Kerberos slave propagation2. 安装配置Kerberos2.1. 安装rpm包 以root用户登录并创建目录存放安装包:mkdir /var/kerberos 上传安装包文件到创建的目录,包括krb5-libs-1.10.3-10.el6_4.6.x86_64.rpm、krb5-server-1.10.3-10.el6_4.6.x86_64.rpm(客户端可不安装)、krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm 执行安装命令:rpm -ivh krb5-libs-1.10.3-10.el6_4.6.x86_64.rpmrpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm【客户端可不安装】rpm -ivh krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm 查看上述包是否已安装成功:rpm qa krb5* 若出现以下情况则代表安装成功。2.2. 配置主KDC服务器2.2.1. 设置全局环境变量需要以root身份登录系统在/etc/profile末尾增加配置文件的全局环境变量:export KRB5_CONFIG=/etc/krb5.confexport KRB5_KDC_PROFILE=/var/kerberos/krb5kdc/kdc.conf保存后并 执行source /etc/profile 使之生效。2.2.2. 配置krb5.conf执行vi编辑/etc/krb5.conf,内容如下:libdefaults default_realm = ERICSSON.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = truerealms ERICSSON.COM = kdc = csdm-hadoop-04kdc = csdm-hadoop-05 admin_server =csdm-hadoop-04 domain_realm . = ERICSSON.COM = ERICSSON.COM2.2.3. 配置kdc.conf 执行vi编辑/var/kerberos/krb5kdc/kdc.conf,内容如下:kdcdefaultsKdc_ports=750,88 realms ERICSSON.COM = kadmind_port = 749 max_life=10h 0m 0s max_renewable_life=7d 0h 0m 0s database_name= /var/kerberos/krb5kdc/principal admin_keytab=/var/kerberos /krb5kdc/kadm5.keytab acl_file=/var/kerberos /krb5kdc/kadm5.acl key_stash_file=/var/kerberos /krb5kdc/.k5.ERICSSON.COM logging default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log集群机器如果开启selinux,请在机器上执行restorecon -R -v /etc/krb5.conf2.2.4. 生成数据库在主KDC服务器上执行以下命令创建数据库,在执行的过程中会提示输入密码和确认密码,两次输入相同的密码即可:kdb5_util create -r s等待片刻后在提示输入密码界面输入密码后会出现以下界面:2.2.5. 创建管理用户运行管理入口命令:kadmin.local 在提示符下执行以下命令addprinc kadmin/adminERICSSON.COMaddprinc kadmin/changepwERICSSON.COM会提示输入密码,输入两次一样的密码后会提示成功创建。将主体添加至密钥文件中ktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/adminktadd -k /var/kerberos/krb5kdc/kadm5.keytab kadmin/changepw2.2.6. 启动krb5kdc和kadmind服务执行以下命令启动krb5kdc和kadmind服务:krb5kdc startkadmind 出现以下界面表示启动成功2.3. 配置从KDC服务器2.3.1. 为从kdc服务器创建创建授权票证每一个kdc服务器都需要一个host票证,用于在迁移数据库数据市在各kdc服务器之间进行交互验证。注意,创建host票据需要在主kdc服务器上执行而不是在从kdc服务器。在csdm-hadoop-04上执行以下命令创建票证:kadminaddprinc randkey host/csdm-hadoop-04ERICSSON.COMaddprinc randkey host/csdm-hadoop-05ERICSSON.COMktadd host/csdm-hadoop-05ERICSSON.COM2.3.2. 设置从kdc服务器的配置文件将主kdc服务器中的配置文件(kdc.conf、 krb5.conf、 .k5.ERICSSON.COM、 kadm5.acl)复制到从kdc服务器上相应的目录中;在从kdc服务器的/var/Kerberos/krb5kdc的目录下创建kpropd.acl文件并增加以下信息:host/csdm-hadoop-04ERICSSON.COMhost/csdm-hadoop-05ERICSSON.COM2.4. 复制数据库数据到KDC从服务器 在主服务器上创建数据库的dump文件kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans 在从服务器上执行数据迁移kprop -f /var/Kerberos/krb5kdc/slave_datatrans csdm-hadoop-05定时将主KDC服务器上的数据库数据,更新到从KDC服务器上由于KDC不提供数据库数据的同步服务功能,因此需要使用脚本或者手工将主KDC服务器上的数据同步到从KDC服务器上,可以参考以下脚本,并配置到定时器中#!/bin/sh kdclist = kdb5_util dump /var/kerberos/krb5kdc/slave_datatrans for kdc in $kdclist do kprop -f /var/kerberos/krb5kdc/slave_datatrans $kdc 2.5. 启动从服务器的krb5kdc程序在从服务器上启动命令执行启动:krb5kdc2.6. 配置自启动在/etc/inittab中增加以下信息可使进程随系统自启动:/etc/init.d/krb5kdc startKadmind2.7. 客户端配置下面以csdm-hadoop-03这台机器作为客户端说明相关配置1、在csdm-hadoop-03上安装客户端软件rpm -ivh krb5-libs-1.10.3-10.el6_4.6.x86_64.rpmrpm -ivh krb5-workstation-1.10.3-10.el6_4.6.x86_64.rpm2、在主KDC服务器csdm-hadoop-04上,把/etc/krb5.conf复制到csdm-hadoop-03本地对应目录3、在客户端csdm-hadoop-03上启动命令执行启动:krb5kdc此时即可在客户端csdm-hadoop-03上连接KDC服务器4、生成可访问csdm-hadoop-03机器应用程序的验证在主KDC服务器csdm-hadoop-04,生成csdm-hadoop-03的principals和keytab,为客户端csdm-hadoop-03添加principals(可以为host或者所要进行验证的机器用户)addprinc randkey host/csdm-hadoop-03ERICSSON.COM 为客户端csdm-hadoop-03生成keytabKtadd k /var/kerberos/krb5kdc/keytab/host.keytab host/csdm-hadoop-03ERICSSON.COM把csdm-hadoop-04上生成的keytab复制到csdm-hadoop-03机器上3. 测试服务器3.1. 服务器端测试客户端连接运行kinit admin/admin,显示提示输入密码则代表配置成功:3.2. 远程客户机连接测试 在客户机运行kinit admin/admin 连接服务端,显示提示输入密码则代表配置成功:4. Hadoop集成kerberos配置4.1 kerberos配置Hadoop官方网站建议的操作系统用户及权限如下,下面我们按照这三个用户的权限进行配置,要求使用下面三种用户分别具有各自启动相应进程的权限。User:GroupDaemonshdfs:hadoopNameNode, Secondary NameNode, JournalNode, DataNodeyarn:hadoopResourceManager, NodeManagermapred:hadoopMapReduce,JobHistory Server4.1.1 为所有机器的用户生成principal从主KDC服务器csdm-hadoop-04上,把/etc/krb5.conf复制到csdm-hadoop-03本地对应目录,在主KDC服务器上为hadoop集群中每台机器的用户创建principal,下面以csdm-hadoop-03这台机器为例,运行管理入口命令:kadmin.local在提示符下执行以下命令:addprinc -randkey hdfs/csdm-hadoop-03ERICSSON.COMaddprinc -randkey host/csdm-hadoop-03ERICSSON.COMaddprinc -randkey yarn/csdm-hadoop-03ERICSSON.COMaddprinc -randkey host/csdm-hadoop-03ERICSSON.COMaddprinc -randkey mapred/csdm-hadoop-03ERICSSON.COMaddprinc -randkey host/csdm-hadoop-03ERICSSON.COM注:u 集群中的每台机器所用到的用户都需执行上面的命令生成principalu 每个用户必须执行addprinc -randkey host/XXXX的命令,这个命令生成的是基于 Kerberos 的应用程序(例如 klist 和 kprop)和服务(例如 ftp 和 telnet)使用的主体。此主体称为 host 主体或服务主体。4.1.2 生成keytab文件完成5.1.1后在主KDC服务器上为所有principal生成keytab文件,运行管理入口命令:kadmin.local 在提示符下执行以下命令:xst -norandkey -k /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/csdm-hadoop-03ERICSSON.COM host/csdm-hadoop-03ERICSSON.COMxst -norandkey -k /var/kerberos/krb5kdc/keytab/mapred.keytab mapred/csdm-hadoop-03 ERICSSON.COM host/csdm-hadoop-03ERICSSON.COMxst -norandkey -k /var/kerberos/krb5kdc/keytab/yarn.keytab yarn/csdm-hadoop-03ERICSSON.COM host/csdm-hadoop-03ERICSSON.COM生成授权文件后,使用以下命令检查生成的keytab是否可用:kinit -k -t /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/csdm-hadoop-03ERICSSON.COMkinit -k -t /var/kerberos/krb5kdc/keytab/mapred.keytab mapred/csdm-hadoop-03ERICSSON.COMkinit -k -t /var/kerberos/krb5kdc/keytab/yarn.keytab yarn/csdm-hadoop-03ERICSSON.COM检查没问题后,把生成的keytab文件分发到整个集群中的所有机器。4.2 修改HADOOP配置文件4.2.1 Jsvc安装配置Datanode的安全机制需要以root用户身份用jsvc来启动,因此首先需要检查是否安装是jsvc如果没有,按以下步骤进行安装:1、 下载commons-daemon-1.0.15-src.tar.gz 包并上传至自定义的目录(本操作目录为/home/hadoop)2、 解压缩后以root用户登录进入目录/home/Hadoop 执行:tar xvf commons-daemon-1.0.15-bin.tar.gz解压完成后进入/home/Hadoop /commons-daemon-1.0.15-src/src/native/unix执行命令:configure执行命令:make编译完成后,会在/home/hadoop/commons-daemon-1.0.15-src/src/native/unix目录下生成jsvc可执行文件,如下图在该目录下执行file jsvc如果出现下图所示,则jsvc安装成功 这里,我们把该执行文件复制到$HADOOP_HOME/bin以便后续的配置执行命令:cp /home/hadoop/commons-daemon-1.0.15-src/src/native/unix/jsvc /home/hadoop/hadoop/bin4.2.2 hadoop-env.sh配置找到以下两项配置,并修改export HADOOP_SECURE_DN_USER=hdfs(配置为要执行datanode的用户,这里为hdfs)export JSVC_HOME=/home/hadoop/hadoop/bin(配置为jsvc所在的目录)4.2.3 core-site.xml在集群中所有节点的core-site.xml文件中添加下面的配置 hadoop.security.authorization true hadoop.security.authentication kerberos tection authentication hadoop.security.auth_to_local DEFAULT 4.2.4 hdfs-site.xml在集群中所有节点的hdfs-site.xml文件中添加下面的配置,下面配置以节点csdm-hadoop-04为例: dfs.block.access.token.enable true dfs.encrypt.data.transfer true dfs.https.address csdm-hadoop-04:50470 dfs.https.port 50470 node.keytab.file /var/kerberos/krb5kdc/keytab/hdfs.keytab node.kerberos.principal hdfs/_HOSTERICSSON.COM node.kerberos.https.principal host/_HOSTERICSSON.COM dfs.secondary.https.address csdm-hadoop-04:50495 dfs.secondary.https.port 50495 node.keytab.file /var/kerberos/krb5kdc/keytab/hdfs.keytab node.kerberos.principal hdfs/_HOSTERICSSON.COM node.kerberos.https.principal host/_HOSTERICSSON.COM dfs.datanode.data.dir.perm 700 dfs.datanode.address :1004 dfs.datanode.http.address :1006 dfs.datanode.keytab.file /var/kerberos/krb5kdc/keytab/hdfs.keytab dfs.datanode.kerberos.principal hdfs/_HOSTERICSSON.COM dfs.datanode.kerberos.https.principal host/_HOSTERICSSON.COM dfs.web.authentication.kerberos.principal hdfs/_HOSTERICSSON.COM dfs.web.authentication.kerberos.keytab /var/kerberos/krb5kdc/keytab/hdfs.keytab The Kerberos keytab file with the credentials for the HTTP Kerberos principal used by Hadoop-Auth in the HTTP endpoint. 配置中有几点要注意的u . dfs.datanode.address表示data transceiver RPC server所绑定的hostname或IP地址,如果开启security,端口号必须小于1024(privileged port),否则的话启动datanode时候会报“Cannot start secure cluster without privileged resources”错误u . principal中的instance部分可以使用_HOST标记,系统会自动替换它为全称域名u . 如果开启了security, hadoop会对hdfs block data做permission check,方式用户的代码不是调用hdfs api而是直接本地读block data,这样就绕过了kerberos和文件权限验证,管理员可以通过设置dfs.datanode.data.dir.perm来修改datanode文件权限,这里我们设置为700配置完成后,修改hdfs.keytab所有者为hdfschown -R hdfs:hadoop /var/kerberos/krb5kdc/keytab/hdfs.keytabchmod 700 /var/kerberos/krb5kdc/keytab/hdfs.keytab同时保证以下表格中各个目录的对于hdfs用户的权限FilesystemPathUser:GroupP.dirhdfs:hadoopdrwx-localdfs.datanode.data.dirhdfs:hadoopdrwx-local$HADOOP_LOG_DIRhdfs:hadoopdrwxrwxr-xHdfs/hdfs:hadoopdrwxr-xr-xHdfs/tmphdfs:hadoopdrwxrwxrwxtHdfs/userhdfs:hadoopdrwxr-xr-x1、测试namenode进程启动是否正常切换到hdfs用户,首先执行klist命令,查看当前是否获取了ticket,经测试,如果已经获取了ticket那么启动namenode进程的时候会报以下错误 使用kdestroy销毁获取的ticket切换到hdfs用户,启动namenode进程(已经执行过HDFS格式化的操作)执行命令:hadoop namenode如果配置正常,应该会看到以下的日志信息输出验证namenode是否启动正常u 可打开网页http:/XX:50070/dfshealth.html#tab-overview验证u hadoop fs -ls /注:如果在你的凭据缓存中没有有效的kerberos ticket,执行hadoop fs ls /将会失败。可以使用klist来查看是否有有有效的ticket。如果为空,使用kinit来获取ticket.命令如下kinit -k -t /var/kerberos/krb5kdc/keytab/hdfs.keytab hdfs/csdm-hadoop-03ERICSSON.COM2、测试datanode启动是否正常切换到root用户,执行命令:hadoop-daemon.sh start datanode如果启动正常,能在日志文件看到以下日志内容在日志目录,启动datanode进程会有以下几个日志文件,其中jsvc.err记录了jsvc的错误信息启动datanode进程,只能使用root用户,如果使用其他用户启动,只会报以下错误4.2.5 mapred-site.xml在mapred-site.xml中添加 mapreduce.jobtracker.kerberos.principal mapred/_HOSTERICSSON.COM mapreduce.jobtracker.kerberos.https.principal host/_HOSTERICSSON.COM mapreduce.jobtracker.keytab.file /var/kerberos/krb5kdc/keytab/mapred.keytab mapreduce.tasktracker.kerberos.principal mapred/_HOSTERICSSON.COM mapreduce.tasktracker.kerberos.https.principal host/_HOSTERICSSON.COM mapreduce.tasktracker.keytab.file /var/kerberos/krb5kdc/keytab/mapred.keytab name mapreduce.jobhistory.address 10020 mapreduce.jobhistory.keytab /var/kerberos/krb5kdc/keytab/mapred.keytab mapreduce.jobhistory.principal mapred/_HOSTERICSSON.COM 将mapred.keytab文件赋权给mapred用户 ,执行以下命令:chown -R mapred:hadoop /var/kerberos/krb5kdc/keytab/mapred.keytabchmod 700 /var/kerberos/krb5kdc/keytab/mapred.keytab确保以下表格中各个路径的执行权限FilesystemPathUser:GroupPermediate-done-dirmapred:hadoopdrwxrwxrwxthdfsmapreduce.jobhistory.done-dirmapred:hadoopdrwxr-x-测试historyserver 进程执行命令:mr-jobhistory-daemon.sh start historyserver配置正常,则会看到以下日志内容4.2.6 yarn-site.xml在yarn-site.xml追加以下内容: yarn.resourcemanager.keytab /var/kerberos/krb5kdc/keytab/yarn.keytab yarn.resourcemanager.principal yarn/_HOSTERICSSON.COM yarn.nodemanager.keytab /var/kerberos/krb5kdc/keytab/yarn.keytab yarn.nodemanager.principal yarn/_HOSTERICSSON.COM yarn.nodemanager.container-executor.class org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor yarn.nodemanager.linux-container-executor.group hadoop yarn.nodemanager.linux-container-executor.path /home/hadoop/hadoop/bin/container-executor YARN提供了两种Container启动实现,DefaultContainerExecutor以及LinuxContainerExecutor,在上面的yarn-site.xml里配置了yarn.nodemanager.container-executor.class的启动方式为LinuxContainerExecutor,那么就需要编译安装LinuxContainerExecutor,按如下操作执行:在hadoop的home目录(这里是/home/Hadoop/hadoop)的/etc/hadoop/目录下创建 container-executor.cfg 文件,内容如下:设置该文件权限:$ chown root:hadoop container-executor.cfg$ chmod 400 container-executor.cfg注意: container-executor.cfg文件读写权限需设置为400,所有者为root:hadoop。并且该文件所在的父目录所有者必须为root用户,并对该文件所在的各个父目录赋以下权限,例如:chmod 750 /home/hadoop/ yarn.nodemanager.linux-container-executor.group要同时配置在 yarn-site.xml 和 container-executor.cfg,且其值需要为运行 NodeManager 的用户所在的组,这里为 hadoop。 banned.users不能为空,默认值为hfds,yarn,mapred,bin min.user.id默认值为 1000,在cent

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论