- Hadoop常见的端口
- Hadoop生态圈
- Hadoop配置文件以及简单的Hadoop集群搭建
- Hadoop参数调优
- 项目经验之基准测试
- Hadoop宕机
- Hadoop 高可用配置
Hadoop 常见的端口
dfs.namenode.http-address:50070
dfs.datanode.http-address:50075
SecondaryNameNode辅助名称节点端口号:50090
dfs.datanode.address:50010
fs.defaultFS:8020 或者9000
yarn.resourcemanager.webapp.address:8088
历史服务器web访问端口:19888
Hadoop 生态圈
然后就是各个组件的介绍了,简单的介绍一下就好了。比如说:
- Flume: 一个高可用的,高可靠的,分布式的海量数据日志采集,聚合和传输的系统;
- Zookeeper: 是一个基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受管擦者的注册,一旦这些数据的状态发生了变化,Zookeeper就将负责通知已经在Zookeeper上注册的观察者做出相应的反应。
Hadoop配置文件以及简单的Hadoop集群搭建
(1)配置文件:
core-site.xml
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/opt/module/hadoop-2.7.2/data/tmp
io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
io.compression.codec.lzo.class
com.hadoop.compression.lzo.LzoCodec
io.compression.codecs
org.apache.hadoop.io.compress.SnappyCodec
hdfs-site.xml
dfs.replication
3
dfs.image.transfer.timeout
3600000
如果对于某一次数据操作来讲,延迟非常高,socket需要等待更长的时间,建议把该值设置为更大的值(默认60000毫秒),以确保socket不会被timeout掉。
dfs.namenode.secondary.http-address
slave02:50090
dfs.client.block.write.replace-datanode-on-failure.enable
true
dfs.client.block.write.replace-datanode-on-failure.policy
NEVER
mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
slave01:10020
mapreduce.jobhistory.webapp.address
slave01:19888
mapreduce.map.output.compress
true
mapreduce.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec
yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
slave01
yarn.log-aggregation.retain-seconds
604800
yarn.nodemanager.vmem-check-enabled
false
hadoop-env.sh,yarn-env.sh,mapred-env.sh这三个文件,我们主要配置一下 JAVA_HOME 的路径。
slaves
这个文件,我们用于配置 DataNode 的节点。
master
slave01
slave02
(2)简单的集群搭建过程:
- JDK安装
- 配置SSH免密登录
- 配置hadoop核心文件
- 格式化namenode
Hadoop参数调优
1)在hdfs-site.xml文件中配置多目录,最好提前配置好,否则更改目录需要重新启动集群.
2)NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作. dfs.namenode.handler.count=20 * log2(Cluster Size)
,比如集群规模为10台时,此参数设置为60.
3)编辑日志存储路径dfs.namenode.edits.dir设置与镜像文件存储路径 dfs.namenode.name.dir
尽量分开,达到最低写入延迟
4)服务器节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。yarn.nodemanager.resource.memory-mb
5)单个任务可申请的最多物理内存量,默认是8192(MB).yarn.scheduler.maximum-allocation-mb
.
项目经验之基准测试
搭建完Hadoop集群后需要对HDFS读写性能和MR计算能力测试。测试jar包在hadoop的share文件夹下。
Hadoop宕机
1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb
(单个任务可申请的最多物理内存量,默认是8192MB)
2)如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。
Hadoop 高可用配置
配置 HDFS-HA集群
1) 配置core-site.xml
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/opt/ha/hadoop-2.7.2/data/tmp
2) 配置 hdfs-site.xml
dfs.nameservices
mycluster
dfs.ha.namenodes.mycluster
nn1,nn2
dfs.namenode.rpc-address.mycluster.nn1
hadoop102:9000
dfs.namenode.rpc-address.mycluster.nn2
hadoop103:9000
dfs.namenode.http-address.mycluster.nn1
hadoop102:50070
dfs.namenode.http-address.mycluster.nn2
hadoop103:50070
dfs.namenode.shared.edits.dir
qjournal://hadoop102:8485;hadoop103:8485;hadoop104:8485/mycluster
dfs.ha.fencing.methods
sshfence
dfs.ha.fencing.ssh.private-key-files
/home/corp/.ssh/id_rsa
dfs.journalnode.edits.dir
/opt/hadoop-2.7.2/data/jn
dfs.permissions.enable
false
dfs.client.failover.proxy.provider.mycluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
再将我们的配置分发到各个节点上去。
配置HDFS-HA自动故障转移
(1)在hdfs-site.xml中增加
dfs.ha.automatic-failover.enabled
true
(2)在core-site.xml文件中增加
ha.zookeeper.quorum
hadoop102:2181,hadoop103:2181,hadoop104:2181
1)关闭所有HDFS服务:
sbin/stop-dfs.sh
(2)启动Zookeeper集群:
bin/zkServer.sh start
(3)初始化HA在Zookeeper中状态:
bin/hdfs zkfc -formatZK
(4)启动HDFS服务:
sbin/start-dfs.sh
(5)在各个NameNode节点上启动DFSZK Failover Controller,先在哪台机器启动,哪个机器的NameNode就是Active NameNode
sbin/hadoop-daemin.sh start zkfc
配置Yarn-HA
Yarn-HA的工作机制:
配置 yarn-site.xml 文件
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
cluster-yarn1
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
hadoop102
yarn.resourcemanager.hostname.rm2
hadoop103
yarn.resourcemanager.zk-address
hadoop102:2181,hadoop103:2181,hadoop104:2181
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
启动HDFS
(1)在各个JournalNode节点上,输入以下命令启动journalnode服务:
sbin/hadoop-daemon.sh start journalnode
(2)在[nn1]上,对其进行格式化,并启动:
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode
(3)在[nn2]上,同步nn1的元数据信息:
bin/hdfs namenode -bootstrapStandby
(4)启动[nn2]:
sbin/hadoop-daemon.sh start namenode
(5)启动所有DataNode
sbin/hadoop-daemons.sh start datanode
(6)将[nn1]切换为Active
bin/hdfs haadmin -transitionToActive nn1
启动YARN
(1)在hadoop102中执行:
sbin/start-yarn.sh
(2)在hadoop103中执行:
sbin/yarn-daemon.sh start resourcemanager
(3)查看服务状态
bin/yarn rmadmin -getServiceState rm1