基本组件: Zookeeper: 分布式协作框架 节点数目: 测试集群:3个 生产集群:(7个差不多) 小型集群:3个或者5个 中型集群:5个或者7个 大型集群:更多,奇数个 HDFS: 存储海量数据 YARN: 集群资源管理 资源调度 MapReduce: 并行计算框架 思想: 分而治之 集群大小:双十一模拟,峰值,宕机处理一类,11月9号 测试集群: 机器数量:(测试数据,每秒读取数据一类) 5台 - 10台 机器配置: 内存:24G/32G以上 8G-12G NameNode:2G 每台内存越多越好 MR内存来自于NN DataNode:6G-8G RS:4G 硬盘:4T / 10T 以上 CPU核:6核以上(i5,i7) 一个map任务默认1G 100万个文件 网卡/网线:(数据传输读写)万兆,十万,百万 生产集群:(十几二十几就可以,内存128G,硬盘15T,浪潮,16核,网卡10万兆) 小型集群: 20台以下。 中型集群: 50台以下。 大型集群: 50台以上。 Hadoop发行版本: Apache CDH:服务收钱,开源免费 (Cloudera's Distribution Hadoop) Cloudera公司:发布版本,只支持64位操作系统 安装:tar包:http://archive.cloudera.com/cdh5/cdh/5 rmp包:http://archive.cloudera.com/cdh5/redhat(lunix发行版本)/6/x86_64/cdh 京东等,自己编译rmp包 parcels包(压缩包,生态系统所有压缩在里面,最好的):cdh 4.1.2 以后才有的 13年 官方推荐的方式 Cloudera Manager进行安装 HDP:(Hortonworks Data Platform) Hortonworks 公司版本: apache -> cdh | hdp 面试题: apache和cdh比较,为什么选择了cdh? CDH省时省力,自动探测host,选择版本,配置简单,几乎是傻瓜式一键安装。MapR方便程度就稍微差一些,但是仍然比Apache要方便很多。但是MapR版本有一个致命的缺点,它用的不是Hadoop的HDFS而是他们自己实现的MapRFS。导致了Hadoop生态系统中所有涉及到文件系统操作的系统都需要使用MapR的发行版。为了兼容MapRFS,源码都被改过。可以到MapR的github账户上看到。Apache的话就真心需要专职运维人员去管理了。需要使用一些集群管理配置工具了。手动绝对累死。你所说的CDH没有对yarn的开发力度不大我觉得这个倒不用太担心。CDH会定期根据Apache开源的最新稳定版本发布相应的CDH版本,所以不存在版本落后最新版很多的情况。而且我记得CDH现在加入了parcel管理,可以非常简单方便地切换hadoop版本而不需要重新安装集群。这个功能诱惑力太大了。另外CDH对于超过50个节点的集群就要开始收费了。这个是需要考虑的问题。5.0后50个节点限制取消。 CDH对Hadoop版本的划分非常清晰,只有两个系列的版本,分别是CDH3和CDH4,分别对应Hadoop 1.0和Hadoop 2.0。相比而言,Apache版本则混乱得多。 CDH比Apache在兼容性,安全性,稳定性上有增强。 CDH3版本是基于Apache Hadoop 0.20.2改进的,并融入了最新的patch,CDH4版本是基于Apache Hadoop 2.X改进的,CDH总是并应用了最新Bug修复或者Feature的Patch,并比Apache hadoop同功能版本提早发布,更新速度比Apache官方快。 CDH支持Kerberos安全认证,Apache则使用简陋的用户名匹配认证. CDH文档清晰,很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等。 CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四种方式安装,Apache 只支持Tar包安装。 CDH使用推荐的Yum/Apt包安装时,有以下几个好处: 1、联网安装、升级,非常方便 2、自动下载依赖软件包 3、Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。 4、自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。 集群环境准备: 机器: 磁盘阵列: RADI0 RADI1 JBOD RADI1:两块磁盘映射为一块磁盘使用。装了CentOs 6.4版本,其中一块磁盘损坏,不会影响系统,因为相互映射备份 0+1更保险 JBOD:磁盘柜。DataNode存储数据推荐的方式。调优。读取快。 datanode存储位置可以配置,挂载一个磁盘,通常:/dfs/data01 /dfs/data02 /dfs/data03 装系统:redhat 5/6 推荐6、CentOs 6.x 64位 6.4版本、sles 11ur版本 clouder文档:查看适应哪个版本 系统: IP地址:尽可能在同一网段,尽量在一个交换机上(机架Rack,默认机架/default)。 设置主机名:bigdata-cdh01.ibeifeng.com、bigdata-cdh02.ibeifeng.com、bigdata-cdh03.ibeifeng.com(主机名里面不能有_下划线) 修改主机名: hostname vi /etc/sysconfig/network 例: hostname bigdata-cdh02.ibeifeng.com vi /etc/sysconfig/network HOSTNAME=bigdata-cdh02.ibeifeng.com IP和主机名映射(所有机器): 禁用IPv6(所有机器): sudo echo "alia net-pf-10 off" >> /etc/modprobe.d/dist.conf sudo echo "alia ipv6 off" >> /etc/modprobe.d/dist.conf tail -f /etc/modprobe.d/dist.conf vi /etc/hosts ## BigData CDH 5.x 172.16.200.11 bigdata-cdh01.ibeifeng.com bigdata-cdh01 172.16.200.12 bigdata-cdh02.ibeifeng.com bigdata-cdh02 172.16.200.13 bigdata-cdh03.ibeifeng.com bigdata-cdh03 windows下: C:/Windows/System32/drivers/etc/hosts 172.16.200.11 bigdata-cdh01.ibeifeng.com bigdata-cdh01 172.16.200.12 bigdata-cdh02.ibeifeng.com bigdata-cdh02 172.16.200.13 bigdata-cdh03.ibeifeng.com bigdata-cdh03 普通用户(所有机器):所有集群中普通用户名字一定要一致 用于安装软件: adduser beifeng passwd 123456 su - beifeng 切换用户 su sudo 切换方便 配置普通用户的sudo权限(所有): su 写权限:chmod 777 /etc/sudoers/chmod u+w /etc/sudoers 添加:vi /etc/sudoers beifeng ALL=(root)NOPASSWD:ALL 收回权限:chmod 777 /etc/sudoers/chmod u-w /etc/sudoers 关闭防火墙(所有,不同机器,关键字不同); sudo service iptables stop 永久关闭:sudo chkconfig iptables off 查看防火墙是否关闭:sudo chkconfig --list|grep iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off 全部关闭 more /etc/inittab:默认运行级别5,节省内存3 Selinux(所有): 禁用:因为麻烦,没有专业运维,运用少,系统服务和驱动程序不兼容,涉及安全 sudo vi /etc/sysconfig/selinux SELINUX=disabled 卸载JDK: 查看版本:sudo rpm -qa|grep java 卸载,参数强制性,因为有些是有关联的:sudo rpm -e --nodeps xxx 设置文件打开数量和用户最大进程数(所有): 文件打开数量: ulimit -a 用户最大进程数: ulimit -u 设置: sudo vi /etc/security/limits.conf 内容: *(任何参数用户) soft nofile 65535 * hard nofile 65535 * soft nproc 32000 * hard nproc 32000 文档:www.cloudera.com/content/www/en-us/documentation/enterprise/5-3-x.html 软件: 集群时间同步: CentOS配置时间同步NTP,为什么要使用ntpd而不是ntpdate? 原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18分,而标准时间是9.28分,ntpd会在一段时间内逐渐的把时间校准到与标准时间相同,而ntpdate会立刻把时间调整到9.28分,如果你往数据库内写入内容或在其他对时间有严格要求的生产环境下,产生的后果会是很严重的。(注:当本地时间与标准时间相差30分钟以上是ntpd会停止工作) 找集群一台机器作为【时间服务器】:bigdata-cdh01.ibeifeng.com sudo rpm -qa|grep ntp sudo vim /etc/ restrict (ifconfig:inet6 addr) mask 255.255.255.0 nomodify notrap #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10 sudo vi /etc/sysconfig/ntpd SYNC_HWCLOCK=yes sudo service ntpd status sudo service ntpd start sudo chkconfig ntpd on sudo chkconfig --list|grep ntpf 客户端同步(剩余其他台机器):zookeeper依赖性特别高 定时任务: Linux Crontab su crontab -l:查看定时器任务 crontab -e:创建定时器任务 ## sync cluster time 0-59/10 * * * * /usr/sbin/ntpdade bigdata-cdh01.ibeifeng.com sudo reboot