一、熟悉集群环境
1.1 搭建Hadoop集群环境
参考:
搭建过程中问题:
1.2 熟悉Hadoop配置文件中的基本配置项
1.2.1 总览
hadoop的重要配置文件有以下几个:
1.2.2 hadoop-env.sh 常用配置
配置名 | 描述 | 值 |
JAVA_HOME | 必须设置 | |
HADOOP_HEAPSIZE | 分配给各个守护进程的内存大小 可以使用HADOOP_NAMENODE_OPTS等单独设置某一守护进行的内存大小 大型集群一般设置2000M或以上,开发环境中设置500M足够 | 默认为1000M |
HADOOP_LOG_DIR | 日志文件的存放目录 | 可以设置为/var/log/hadoop |
HADOOP_SLAVES | slaves文件的位置,一般无需修改 | |
HADOOP_SSH_OPTS | ||
HADOOP_SLAVE_SLEEP | ||
HADOOP_IDEN_STRING |
1.2.3 core-site.xml 常用配置
配置名 | 描述 | 值 |
hadoop.tmp.dir | 如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这个路径中 | |
fs.checkpoint.dir | SecondNameNode用来存储checkpoint image文件 | 默认为1000M |
fs.defaultFS | 默认使用的文件系统类型 | 可以设置为/var/log/hadoop |
fs.trash.interval | 垃圾箱文件保留多久(单位:分钟),默认值是0,不打开垃圾收回机制 | |
hadoop.security.authentication | Hadoop使用的认证方法(simple或kerberos) | |
io.file.buffer.size | 读写序列文件缓冲区大小,默认设置为4096 |
1.2.4 hdfs-site.xml 常用配置
配置名 | 描述 | 值 |
dfs.namenode.name.dir | namenode存放fsimage的目录 | |
dfs.datanode.data.dir | datanode存放数据块文件的目录 | |
dfs.namenode.checkpoint.dir | Secondarynamenode启动时使用,放置sn做合并的fsimage及 editlog文件 | |
dfs.replication | 数据副本数 | |
dfs.blocksize | 文件Block大小 | |
dfs.permissions | 对HDFS是否启用认证。默认为true | |
dfs.datanode.handler.count | Datanode IPC 请求处理线程数 |
1.2.5 mapred-site.xml
配置名 | 描述 | 值 |
mapreduce.job.hdfs-servers | job客户端参数 | ${fs.defaultFS} |
mapreduce.task.io.sort.factor | 在Reduce Task阶段,排序文件时一次合并的流的数量。 这决定了打开文件句柄的数量。也即是一次合并的文件数据,每次合并的时候选择最小的前10进行合并。 | 10 |
mapreduce.task.io.sort.mb | 排序文件时使用的缓冲区内存总量,以兆字节为单位。 默认情况下,为每个合并流提供1MB,这应该最小化搜索。 | 100 |
mapreduce.map.sort.spill.percent | Map阶段溢写文件的阈值(排序缓冲区大小的百分比)。 | 0.8 |
mapreduce.jobtracker.address | MapReduce作业跟踪器运行的主机和端口。 如果是“本地”,则作业将作为单个映射在进程中运行并减少任务。 | local |
mapreduce.job.maps | 单个任务的map数量。 | 2 |
mapreduce.job.reduces | 单个任务的reduce数量。 | 1 |
mapreduce.job.running.map.limit | 单个任务并发的最大map数,0或负数没有限制 | |
mapreduce.job.running.reduce.limit | 单个任务并发的最大reduce数,0或负数没有限制 | |
mapreduce.job.max.map | 单个任务允许的最大map数,-1表示没有限制。 | |
mapreduce.job.max.split.locations | 分片数量 | 10 |
mapreduce.job.split.metainfo.maxsize | split的元数据信息数量,如果value为-1,则没有限制 | 10000000 |
mapreduce.map.maxattempts | 每个 Map Task 最大重试次数,一旦重试参数超过该值,则认为 Map Task 运行失败。 | 4 |
mapreduce.reduce.maxattempts | 每个 reduce Task 最大重试次数,一旦重试参数超过该值,则认为 reduce Task 运行失败。 | 4 |
mapreduce.reduce.shuffle.parallelcopies | Reduce Task启动的并发拷贝数据的线程数目 | 5 |
mapreduce.task.timeout | 如果任务既不读取输入,也不写入输出,也不更新其状态字符串,则任务终止之前的毫秒数。0表示禁用超时。 | 600000 |
mapreduce.map.memory.mb | 每个Map Task需要的内存量 | 1024 |
mapreduce.map.cpu.vcores | 每个Map Task需要的虚拟CPU个数 | |
mapreduce.reduce.memory.mb | 每个Reduce Task需要的内存量 | 1024 |
mapreduce.reduce.cpu.vcores | 每个Reduce Task需要的虚拟CPU个数 | |
mapred.child.java.opts | jvm启动的子线程可以使用的最大内存。建议值-XX:-UseGCOverheadLimit -Xms512m -Xmx2048m -verbose:gc -Xloggc:/tmp/@taskid@.gc | -Xmx200m |
yarn.app.mapreduce.am.resource.mb | MR ApplicationMaster占用的内存量。 | 1536 |
yarn.app.mapreduce.am.resource.cpu-vcores | MR ApplicationMaster占用的虚拟CPU个数。 | |
mapreduce.jobhistory.address | 指定历史服务器的地址和端口 | |
mapreduce.jobhistory.webapp.address | 历史服务器的web地址 | |
mapreduce.map.java.opts | 每个map任务的jvm需要的内存量,一般为map内存的0.8 | -Xmx1024m |
mapreduce.reduce.java.opts | 每个reduce任务jvm需要的内存量。为reduce内存量的0.8 | |
mapreduce.map.output.compress | map输出是否进行压缩,如果压缩就会多耗cpu,但是减少传输时间,如果不压缩,就需要较多的传输带宽,默认是false。配合 mapreduce.map.output.compress.codec使用 |
1.2.6 masters/slaves
1、masters记录的是需要启动secondary namenode的节点, 不是namenode,它也和mapreduce没任何关系。
slaves记录的是需要执行start-all.sh(或相关命令)时,需要远程启动tasktracker与datanode的节点。
2、这2个文件不需要分发至各个工作节点。
3、哪个机器执行启动脚本,那它就是jobtracke与namenode,再根据masters确定secondary namenode, 根据slaves文件确定tasktracker与datanode,并远程启动这些守护进程。
1.2.7 hadoop常用端口配置
1.HDFS 端口
2.MR端口
3.其他端口
1.2.8 其他
NameNode元数据相关文件目录解析:
1.3 掌握Hadoop集群各服务的启停
1.3.1 启动和关闭 namenode,secondaryNamenode和datenode (启动hdfs)
start-dfs.sh
stop-dfs.sh
1.3.2 启动yarn
start-yarn.sh
stop-yarn.sh
1.3.3 各个节点单独启动
1、单独启动namenode守护进程
hadoop-daemons.sh start namenode
2、单独启动DataNode守护进程
hadoop-daemons.sh start datanode
3、单独启动SecondaryNameNode 守护进程
hadoop-daemons.sh start SecondaryNameNode
4.开启resourcemanager
yarn-daemon.sh start resourcemanager
5.开启nodemanager
yarn-daemons.sh start nodemanager
6.启动historyserver
mr-historyserver-dameon.sh start /stop historyserver
二、熟悉Hadoop基本操作
2.1 熟悉常用的HDFS shell命令
2.2 掌握通过客户端API读写HDFS的方式
2.2.1 读写数据机制
2.2.2 API操作方式