设置yarn.scheduler.fair.user-as-default-queue =fasle, 就会阻止每一个用户使用自己默认的队列。
设置yarn.scheduler.fair.allow-underclared-pools =true 就允许用户在执行任务的时候创建指定的不存在的队列。
存储在sequencefile中的key value不一定需要是实现writable接口的类,所有的类似均可以序列化和反序列化。
Hive 尝试使用基于列的存储,可以提高hive的存储与执行效率?
HIve使用spark或tez这样的计算框架,可以提高查询返回的效率?
Crunch 是一个高级次的mapreduce pipe line的封装api,可以提高代码的利用率,使用java scala来写代码和udf,
可以称为是java版本的pig.
Which yarn daemon or service monitors a controller's per-application resource using (e.g. memory Cpu)?
Nodemanager or ApplicationMaster?
查看集群中可用的hdfs资源空间方法命令
Hdfs dfs -df / 就会显示当前可用的空间与已用空间
Hdfs dfsadmin -report 也会显示空间使用情况与每一个数据节点的健康与使用情况
HDFS应该可以寄生在任何可以的linux文件系统上,Ext3和4只是推荐的文件系统
CDH packing do what in KERBOS installation?
Create users or keytab files?
在小集群上,可以把nn和rm配置在一个节点上,在大的集群上,有足够的理由建议他们分开到不同的节点上。
原因1,主服务都对资源有一定的要求,避免在同一个节点上对资源进行争用。
原因2也是主要原因,考虑到集群的高可用,分部到不同的节点,减少了因同一个节点故障造成的问题。
网络机架感知hadoop框架默认的实现是使用基于脚本的映射,大部分情况下,我们不需要自己去实现那个接口,直接
使用这个基于脚本映射的接口即可。
Net.topology.script.file.name 这个脚本接口一个或多个主机名或ip列表,返回它们的机架信息。
机架感知技术对hadoop的影响
1 HDFS
hdfs在选择块副本的时候选择的策略与机架配置有关,先在某一节点(若在本节点上传,则是本节点存一份)存一
份,然后在这一节点的同机架存一份,第三份是存到此机架外,为了提高可用性。(以三个副本为例)
2。MR
MR在进行作业分配的时候也会考虑到尽可能使用机架内的网络资源,减少使用机架外的资源,来选择执行MR的任务
hadoop的控制脚本依赖ssh来执行集群范围的操作,例如登录到某节点启动相关进程。
所以ssh并不是必须的,你可以使用其他并行ssh的工具,如pdsh等
在使用hdfs的时候,fs.defaultFS有两个用途,一个是指定了hdfs集群的namenode的地址和端口。
另一个用途是指定了hdfs访问的默认路径。
由于第二个用途,客户端或或个用户可以为自己方便起见,使用自己的配置,不必要和其他节点保存一致。
给dfs.namenode.name.dir 配置多个目录,会自动生成多份的元数据作为备份,有机会做个测试。
同样的原理适用于dfs.namenode.checkpoint.dir属性,(不适用 于datanode.dir)
Yarn.nodemanager.aux-services = mapreduce_shuffle
yarn调度器根据配置来分配容器,yarn.scheduler.minimum-allocation-mb(默认1024M)和
Yarn.scheduler.maximum-allocation-mb (默认8192mb)。
对于yar.nodemanager.resource.cpu-vcores属性的设置,使用机器上总的核数,减去该节点上长服进程的数量。
如(datanode,nodemanager 和其他长服进程)
cpu的使用问题,nodemanager并不限制运行的container使用的cpu的核数,可能会出现滥用的情况。
一种解决方案是使用linux cgroups,需要配置 yarn.nodemanager.contain-executor.class 为LinuxContainerExecutor类。
对于IO操作,hadoop使用的默认4k的缓存,对于现在的机器来说,这个配置有一点低,可以调整 core-site.xml
中配置io.file.buffer.size属性,调整为128k是一个通用的选择。
Hadoop的安全机制中kerbos到底起到了哪些作用?
Hadooop.security.authentication=kerberos (core-site.xml)
Hadoop.security.authrozation=true
配置acls在hadoop-policy.xml指定哪些用户和组可以访问hadoop的服务。
为了减少集群的rpc调用,hadoop使用代理token的方式来减少对kdc的压力。同时保持安全性。
这种代理是由服务端来做的,如namenode和resourcemanager.
如果作业需要访问多个hdfs 集群,在kerberos的情况下,需要设置mapreduce.job.hdfs-servers 给一个逗号分开的列表。
HDFS Encrypted Transport
1。启用kerberos安全机制
2。Hadoop.rpc.protection=privacy in core-site.xml 在客户端和服务器端的配置。
- Set dfs.encrypt.data.transfer=true in hdfs-site.xml 在的有服务器端的配置。
- 重启所有进程
- 如果要配置shuffle的加密,配置mapreduce.shuffle.ssl.enabled 在mapred-site.xml