设为首页 收藏本站
查看: 1414|回复: 0

[经验分享] [hadoop读书笔记] 第九章 构建Hadoop集群

[复制链接]

尚未签到

发表于 2017-12-16 22:25:51 | 显示全部楼层 |阅读模式
  P322 运行datanode和tasktracker的典型机器配置(2010年)
  处理器:两个四核2-2.5GHz CPU
  内存:16-46GN ECC RAM
  磁盘存储器:4*1TB SATA 磁盘
  网络:千兆以太网
  Hadoop一般使用多核CPu和多磁盘提升硬件功能
  P323 小集群VS大集群
  对于几十个节点的小集群,在master上同时运行namenode和jobtracker通常没问题
  但是随着集群节点增加,namenode的内存压力将逐步扩大,此时namenode和jobtracker最好分别配置在不同机器
  注意,大集群中,namenode和secondNamenode也需要分开部署以降低内存压力和提高集群可靠性
  P325 CDH(Cloudera)与hadoop(apache)对比
  Cloudera的CDH和Apache的Hadoop的区别  目前而言,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:
  1、Apache(最原始的版本,所有发行版均基于这个版本进行改进)
  2、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)
  3、Hortonworks版本(Hortonworks Data Platform,简称“HDP”)
  对于国内而言,绝大多数选择CDH版本,CDH和Apache版本主要区别如下:  
  (1) CDH对Hadoop版本的划分非常清晰,只有两个系列的版本,分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0),相比而言,Apache版本则混乱得多;比Apache hadoop在兼容性,安全性,稳定性上有增强。  
  (2)CDH3版本是基于Apache  hadoop  0.20.2改进的,并融入了最新的patch,CDH4版本是基于Apache hadoop 2.X改进的,CDH总
  是并应用了最新Bug修复或者Feature的Patch,并比Apache hadoop同功能版本提早发布,更新速度比Apache官方快。
  (3)安全 CDH支持Kerberos安全认证,apache hadoop则使用简陋的用户名匹配认证
  (4)CDH文档清晰,很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等。
  (5)CDH支持Yum/Apt包,Tar包,RPM包,CM安装,Cloudera Manager三种方式安装,Apache hadoop只支持Tar包安装。
  注:CDH使用推荐的Yum/Apt包安装时,有以下几个好处:
  1、联网安装、升级,非常方便
  2、自动下载依赖软件包
  3、Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。
  4、自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。
  P325 自动化安装
  可以使用Kickstart或者FUll Automatic Installation等工具来减轻安装和维护相同软件的负担。
  Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
  P326 安装步骤
  1、安装Java并配置环境变量
  2、创建hadoop用户和组
  3、下载解压缩hadoop的tar到系统目录
  4、将hadoop目录文件拥有者修改为hadoop用户
  5、配置节点间ssh免密码登录
  6、启动并测试hadoop集群
  P329 Hadoop核心配置文件列表
DSC0000.png

  P329 配置管理
  明确一点,Hadoop没有全局的配置管理器,不管是master还是worker都是各自保存一系列的配置文件,由管理员管理配置的同步工作。
  可以使用Hadoop 同步工具rsync来进行配置同步工作,或者使用dsh或pdsh等并行shell工具来完成该任务。
  仅namenode和jobtracker使用了文件masters和salves,所以这些文件无需在集群每个节点分发。
  配置hadoop-env.sh中的HADOOP_SLAVES值可以执行slaves文件的放置位置
  start-dfs.sh脚本 - 启动集群中所以的HDFS守护进程,这个脚本执行的机器上会启动namenode
  1、在脚本运行机器上启动唯一的namenode
  2、在slaves配置各机器上启动datanode
  3、在masters配置各机器上启动secondNamenode
  start-mapred.sh脚本 - 启动集群中所有的MR守护进程,这个脚本执行的机器上会启动jobtracker
  1、在脚本执行机器上启动唯一的jobtracker
  2、在slaves配置的各机器上启动tasktracker
  规则总结:
  在小集群上,可以在同一个节点上启动namenode和jobtracker,也就是在同一台机器执行start-dfs.sh和start-mapred.sh,或者直接执行start-all.sh
  在大规模集群上,在namenode机器上运行start-dfs.sh HDFS控制脚本,在jobtracker上运行start-mapred.sh MR控制脚本,要求salves要保持同步
  P332 hadoop-env.sh文件详解
  内存
  最大需求内存量的计算依据
  1、Hadoop为每个守护进程默认分配1GB内存,由HADOOP_HEAPSIZE控制(守护进程如:namenode、secondNamenode、jobtracker,datanode,tasktracker等)
  2、tasktracker会启动独立的JVM来分别运行map和reduce任务,tasktracker默认可运行2个map和2个reduce任务(由mapred.tasktracker.map.tasks.maximum和由mapred.tasktracker.reduce.tasks.maximum控制),而分配给每个JVM的内存由mapred.child.java.opts属性配置。默认是-Xmx200m(200MB)
  3、HADOOP_NAMENODE_OPTS属性可控制namenode节点的内存分配大小,如2GB配置为-Xmx2000m
  4、HADOOP_SECONDARYNAMENODE_OPTS属性可控制辅助namenode节点的内存分配大小,一般配置来和主namenode相同即可
  所以,一个双核处理器的工作节点(slave节点)至少需要分配2800MB的内存
  datanode - 1GB
  tasktracker - 1GB
  子map任务 - 2*200 = 400MB
  子reduce任务 - 2*200 = 400MB
  合计2800MB
  一台机器上最大配置的任务数取决于一台机器有多少个处理器
  所以,一个拥有8核处理器的工作节点(slave节点)至少需要分配4800MB的内存
  datanode - 1GB
  tasktracker - 1GB
  子map任务 - 7*200 = 1400MB(考虑到还有datanode 和 tasktracker进程 ,所以这个值不能设置为8)
  子reduce任务 - 7*200 = 1400MB(考虑到还有datanode 和 tasktracker 进程,所以这个值不能设置为8)
  合计4800MB
  JAVA_HOME:配置Hadoop 系统的Java安装位置
  HADOOP_LOG_DIR:配置Hadoop日志文件位置,大部分故障诊断日志会记录在.log为后缀的文件中。
  HADOOP_MASTER:启用rsync配置文件同步工具。配置该项后,当salves节点启动时,会自动将slave本地的HADOOP_INSTAll根目录与HADOOP_MASTER根目录同步
  HADOOP_SLAVE_SLEEP:为了避免启动工作节点时发送大量rsync请求导致主节点瘫痪,故配置该项使主节点在调用两个slave的间隙时主动休眠一段时间,如0.1(s)
  P336 守护进程关键属性
  core-site.xml:
  fs.default.name:描述namenode的主机和端口地址,端口默认8020,同时指定了默认的文件系统(例子:hdfs://192.168.200.123:9000)默认值:file:///
  io.file.buffer.size:辅助I/O操作的缓冲区大小(默认4KB,配置为128KB比较合理)
  hdfs-site.xml:
  dfs.name.dir:指定namenode元数据存储目录(例子:/local/data/hdfs/name,/remote/data/hdfs/name)
  dfs.data.dir:指定datanode存储实际数据的目录(例子:/disk1/hdfs/data,/disk2/hdfs/data)
  fs.checkpoint.dir:存储文件系统检查点的目录(例子:/disk1/hdfs/namesecondary,/disk2/hdfs/namesecondary)
  dfs.block.size:HDFS块大小(默认64MB,配置为128MB或256MB较为合理)
  mapred-site.xml:
  mapred.job.tracker:指派一台机器作为jobtracker以运行MR(例子:jobtracker:8021)
  mapred.local.dir:存放MR作业中间数据和工作文件的临时目录(例子:/disk1/mapred/local,/disk2/mapred/local)
  mapred.system.dir:任务共享文件的存储目录(例子:/tmp/hadoop/mapred/system)
  mapred.tasktracker.map.tasks.maximum:map任务槽(例子:7)
  mapred.tasktracker.reduce.tasks.maximum:reduce任务槽(例子:7)
  mapred.child.java.opts:每个任务子JVM内存分配大小(例子:-Xmx400m)
  mapreduce.map.java.opts:每个map任务子JVM内存分配大小(例子:-Xmx400m)
  mapreduce.reduce.java.opts:每个reduce任务子JVM内存分配大小(例子:-Xmx400m)
  P342 守护进程地址和端口
  hadoop守护进程一般同时运行RPC和HTTP两个服务器,RPC支持守护进程间的相互通信,HTTP则提供与用户交互的WEB界面。
  当IP指定为0.0.0.0时,Hadoop将与本机的所有地址绑定
  RPC地址和端口
  fs.default.name : hdfs://localhost/ - 表示在本机器上的8020端口开放namenode的RPC进程
  dfs.datanode.ipc.address:0.0.0.0:50020 - 表示在本机器上的50020端口开放datanode的RPC进程
  dfs.datanode.address:0.0.0.0:50010 - 表示在本机器上的50010端口开放datanode的TCP/IP进程
  mapred.job.tracker:192.168.6.200:8021 - 表示在192.168.6.200机器上的8021端口开放jobtracker的RPC进程
  HTTP地址和端口
DSC0001.png

  P347 YARN配置
  启动start-yarn.sh脚本会在脚本运行的机器上启动资源管理器(ResourceManager),在slave列出的每台机器上启动节点管理器(NodeManager)。
  ResourceManager可以和namenode运行在同一个节点上,也可以和namenode运行在不同的节点上。
  YARN还有一个作业历史服务器(显示历史作业执行细节)和一个Web应用程序代理服务器(安全访问YARN的Web用户界面)。
  yarn配置文件:
  yarn-en.sh
  yarn-site.xml
  当在YARN上运行MR时,在mapred-site.xml中,与jobtracker和tasktracker相关的系列属性失效废弃。除了以下三个属性:
  mapreduce.framework.name:yarn
  mapred.child.java.opts
  mapreduce.map.java.opts
  mapreduce.reduce.java.opts
  取而代之的是yarn的全新属性:
  yarn.resourcemanager.address:资源管理器的RPC通信地址和端口(例子:0.0.0.0:8032)
  yarn.nodemanager.local-dirs:存储作业中间数据和临时数据(类似于MR1中的mapred.local.dir)
  yarn.nodemanager.aux-services:显式启用MR的shuffle句柄(默认值:mapreduce.shuffle)
  yarn.nodemanager.resource.memory-mb:分配到节点管理器的物理内存。默认8192
  yarn.nodemanager.vmem-pmem-ratio:虚拟内存和物理内存的比率。默认2.1
  YARN内存需求分析:一个slave节点上,需求的内存量为MB
  datanode:1GB(守护进程)
  nodemanager:1GB(守护进程)
  yarn.nodemanager.resource.memory-mb:8192MB(该节点管理器物理内存分配量)
  mapred.child.java.opts:设置map/reduce任务JVM的堆大小 -Xmx800m
  mapreduce.map.memory.mb/mapreduce.reduce.memory.mb:指定内存大小以运行map/reduce任务 - 1024MB
  例子:假设mapred.child.java.opts 为 -Xmx800m,mapreduce.map.memory.mb为1024默认值
  当map任务启动时,nodemanager会为任务分配1024mb内存,并启动一个JVM,该JVM具有最大堆为800MB。
  所以,最小需求内存为1024+1024+8192+800+1024=12064MB约11.7GB 最好配置一个16GB的内存为优
  P351 YARN守护进程地址和端口
  RPC
DSC0002.png

  HTTP
DSC0003.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424855-1-1.html 上篇帖子: hadoop启动后jps查不到namenode的解决办法 下篇帖子: 人生,唯有锻炼与读书不能辜负
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表