Hadoop20Federation
原文:http://www.linuxidc.com/Linux/2014-05/101179.htm
1 概述
在Hadoop1.0的架构中,HDFS的所有的元数据都放在一个namenode中,只有一个namespace(名字空间)。这样随着HDFS的数据越来越多,单个namenode的资源使用必然会达到上限,而且namenode的负载也会越来越高,限制了HDFS的性能。
在hadoop2.0架构中,namenode federation(联合)通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展,并且能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。还有可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。
2 架构
如果上图所示,一个block pool由属于同一个namespace的数据块组成,每个namenode管理一个namespace,即每个namenode负责存储和管理一个block pool的元数据。而每个datanode是会连接所有的namenode的,为所有的block pools所共享,即每个datanode都会存储所有的block pools的数据块。每个block pool通过namespace隔离开来,对一个block pool的操作不会影响另外一个block pool。
从配置和使用的角度来看,整个HDFS有一个唯一的clusterid,如“hellokitty”,它可以配置多个block pool/namespace(也叫name service),如“mycluster”和“yourcluster”。为了方便访问不同名字空间的目录和文件,federation还提供了一个类似linux的Client Side Mount Table的挂载机制,提供了一个统一的全局的文件系统视图(viewfs)。用户可以根据自己的需要把各个namespace挂载到一个叫做viewFS的文件系统视图的不同目录下。例如namespace/name service “mycluster”和“yourcluster”分别挂载到viewfs的“/my”和“/your”目录下,如下图所示:
3 federation和HA
上面提到的每个namespace/name service配置一个namenode,这样这个namespace/name service的单点问题还是存在,因此可以给每个namespace/name service配置成HA。
假设我们有4台namenode,分别是namenode1,namenode2,namenode3,namenode4。其中namenode1和namenode2是namespace/name service“mycluster”的两个主备namenode节点,NN_ID分别是“mycluster”的“nn1”和“nn2”;而namenode3和namenode4是namespace/name service“yourcluster”的两个主备namenode节点,NN_ID分别是“yourcluster”的“nn1”和“nn2”。
“mycluster”和“yourcluster”分别挂载在viewfs的“/my”和“/your”目录下。
结构如下图所示:
4 实战tips
一般1000台机器一下的中小规模的hadoop集群,一个namespace/name service就足够了,不需要考虑federation,以免增加不必要的复杂性。
Apache Hadoop HDFS federation官方wiki:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/Federation.html
扩展阅读:http://www.sizeofvoid.net/hadoop-2-0-namenode-ha-federation-practice-zh/
使用CDHManager安装Kerberos之一步一步配置
一、部署Kerberos到集群
1.选择集群
2.安装Kerberos
二、启用Kerberos
1.启用向导
2.逐项检测
这一步一些问题的参考:http://bananalighter.blog.51cto.com/6386339/1551473
3.创建KDC的管理员账户
1 2 3 |
kadmin.local addprinc lee/admin #input password |
填入CM窗口,注意用户名后面要@安全域
4.无脑下一步
参考:
http://debugo.com/kerberos-5-conf/
http://blog.chinaunix.net/uid-1838361-id-3243243.html
http://wgzhao.com/2005/12/02/kerberos-authentication-configuration/
还有师父的人肉指导╮(╯▽╰)╭
使用CDHManager安装Kerberos服务——之初始化失败
原文:http://blog.sina.com.cn/s/blog_6ccfa4f30100v06s.html
我碰到了:第一、二
No.1
# kinit admin@test.com
kinit: Cannot find KDC for requested realm whilegetting initial credentials
Adding “dns_lookup_kdc = true” to the [libdefaults] section of krb5.conf seems to fix the problem.
—————————————————————-
No.2
# kinit admin@test.com
kinit: Client not found in Kerberos database while getting initial credentials
This is Kerberos way of saying “User not found”,solution as follows:
# kinit administrator@test.com
Password for administrator@test.com:<input domain controller’s password>
kinit: Clock skew too great while getting initial credentials
ntpdate -b 172.16.153.130
26 Oct 17:05:06 ntpdate[29684]: step time server 172.16.153.130 offset 14586.370253 sec
——————————————————————–
No.3
# kinit administrator@test.com
kinit: Cannot resolve network address for KDC in realm “test.com” while getting initial credentials
# vim /etc/resolv.conf
nameserver 172.16.153.2 # (DNS Servers’ IP)
warning: if the ip is writen wrong, you cannot ping test.com successfully.
/etc/resolv.conf is DNS configure file
——————————————————————-
No.4
[root@chenjintao etc]# kinit administrator@test.com
Password for administrator@test.com:
kinit: KDC reply did not match expectations while getting initial credentials
[root@chenjintao etc]# kinit administrator@TEST.COM
Password for administrator@TEST.COM:
(本地源)安装CDHManager
参考链接:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cm_ig_install_path_b.html#cmig_topic_6_6_1_unique_1
一、安装jdk配java环境
1 |
rpm -ivh jdk.rpm |
打开/etc/profile
增加:
1 2 3 4 |
JAVA_HOME=/usr/java/jdk1.7.0_60 CLASSPATH=.:$JAVA_HOME/lib.tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH |
二、安装mysql
1 2 3 4 5 6 7 8 9 10 |
yum install mysql-server mysql #初始化 mysql_install_db #运行production推荐的那个初始化,来设置密码 #新建一个高权限的临时账户 mysql> grant all on *.* to 'temp'@'%' identified by 'temp' with grant option; #运行cm的脚本来进行数据库的创建 /opt/cm-5.1.1/share/cmf/schema/scm_prepare_database.sh mysql -h localhost -utemp -ptemp --scm-host localhost scm scm scm |
三、安装cdh Manager
1 2 3 4 5 6 |
#创建目录 mkdir /opt #解压cm的包到目录 tar xzvf cm.tar.gz -C /opt/cm-5.1.1/run/cloudera-scm-server vim /opt/cm-5.1.1/etc/cloudera-scm-agent/config.ini serverhost=localhost |
四、启动cdh Manager
1 2 |
/opt/cm-5.1.1/etc/init.d/cloudera-scm-agent start /opt/cm-5.1.1/etc/init.d/cloudera-scm-server start |
五、访问管理页面
http://localhost:7180
账号密码:admin/admin
参考:
http://debugo.com/cm5-install/