环境准备
安装hadoop/zookeeper/hbase
我在kbhbase1这个机器上已经安装好了hadoop,zookeeper,hbase,为了简单起见所有在东西都跑在这台机器上。同时检查了在没在启用kerberos的情况下,hbase工作正常。
禁用selinux
#vim /etc/sysconfig/selinux 设置SELINUX=disabled,并重启
安装JCE
从Oracle网站下载JCE(Java Cryptography Extension)补丁,此补丁与AES-256加密有关。下载解压之后,把得到的两个jar文件local_policy.jar,US_export_policy.jar拷贝到$JAVA_HOME/ jre/lib/security下进行覆盖。
Hadoop配置
创建keytab
kadmin: addprinc -randkey root/kbhbase1.mh.com@MH.COM
kadmin: xst -k root.keytab root/kbhbase1.mh.com
这样就会在kerberos服务器上创建一个用户root/kbhbase1.mh.com@MH.COM,其中名字中/之后的部分应该是固定写法,即主机名+kerberos realm,红色部分则可以随意。xst命令会在当前目录下生成这个root.keytab文件。拷贝root.keytab文件到hadoop的配置目录,在我的机器上是:/usr/local/hadoop-2.6.0/etc/hadoop
修改core-site.xml
fs.defaultFS
hdfs://kbhbase1.mh.com:9000
hadoop.security.authentication
kerberos
hadoop.security.authorization
true
View Code
修改hadoop-env.sh
export HADOOP_SECURE_DN_USER=root
export JSVC_HOME=/usr/local/hadoop-2.6.0/libexec/
关于JSVC,默认指向hadoop安装目录的libexec下,但我的libexec下并没有jsvc文件(我的hadoop是直接下载的tar.gz包,不是rpm安装),google搜索jsvc,然后在apache网站下载源代码包以及bin包,我下的是commons-daemon-1.0.15-src.tar.gz及commons-daemon-1.0.15-bin.tar.gz,先解压src包后进入src/native/unix目录依次执行 ./configure命令, make命令,这样会在当前目录下生成一个叫jsvc的文件,把它拷贝到hadoop目录下的libexec下。 再解压bin包,然后把得到的commons-daemon-1.0.15.jar 文件拷贝到hadoop安装目录下share/hadoop/hdfs/lib下,同时删除自带版本的commons-daemon-xxx.jar包。
修改hdfs-site.xml
dfs.namenode.name.dir
file:/root/hadoopdata/namenode
dfs.datanode.data.dir
file:/root/hadoopdata/datanode
dfs.namenode.secondary.http-address
kbhbase1.mh.com:9001
dfs.block.access.token.en