root 123456
第3章
3.1 分布式部署
3.2 分布式服务框架
3.3 HDDF HA架构部署测试
HA(高可用性): 有两台NameNode
3.4 高级特性
3.5 YARN HA架构部署测试
部署分类
本地模式
分布式模式
伪分布式:一台机器运行所有的守护进程,从节点(DataNode、NodeManager
)只有一个。
完全分布式:其与伪分布式最大的区别是 有多个从节点(DataNodes、NodeManagers
),多个节点需要在配置文件($HADOOP_HOME/etc/hadoop/slaves
)中进行配置
测试的是三台机器- 生产中需要配置固定IP地址
ifconfig
hostname
- 规划机器
192.168.217.131 | 192.168.217.132 | 192.168.217.133 |
---|---|---|
hadoop-senior | hadoop-senior02 | hadoop-senior03 |
1.5G内存 | 1G内存 | 1G内存 |
1 CPU | 1CPU | 1CPU |
- linux改变网卡名称
vim /etc/udev/rules.d/70-persistent-net.rules
vim /etc/sysconfig/network-scripts/ifcfg-eth0
用主机名代替ip,当ip发生改变时,不会影响系统运行。
配置映射
/etc/hosts
IP 带域名的主机 主机
1.1.1.1 host_name.my.com host_name
- HDFS规划
192.168.217.131 | 192.168.217.132 | 192.168.217.133 |
---|---|---|
hadoop-senior | hadoop-senior02 | hadoop-senior03 |
NameNode | ||
DataNode | DataNode | DataNode |
SecondaryNameNode |
- YARN规划
192.168.217.131 | 192.168.217.132 | 192.168.217.133 |
---|---|---|
hadoop-senior | hadoop-senior02 | hadoop-senior03 |
ResourceManager | ||
NodeManager | NodeManager | NodeManager |
- MapReduce规划
192.168.217.131 | 192.168.217.132 | 192.168.217.133 |
---|---|---|
hadoop-senior | hadoop-senior02 | hadoop-senior03 |
JobHistoryServer |
配置
- hdfs
hadoop-env.sh
NameNode在 core-site.xml 中配置
SecondaryNameNode 在 hdfs-site.xml 中配置
DataNode在 slaves 中配置
- yarn
yarn-env.sh
ResourceManager 在 yarn-site.xml 中配置
NodeManager在 slaves 中配置
- mapreduce
mapred-env.sh
JobHistoryServer在 mapred-site.xml 中配置
免密码登录
cd
cd .ssh/
ssh-copy-id host_name
ssh-keygen -t rsa
ssh-copy-id host_name
拷贝(分发)文件
scp -r file_path user_name@host_name:file_path
启动集群
在 hadoop-senior机器上:
bin/hdfs namenode -format
启动 hdfs
sbin/start-dfs.sh
单独脚本启动:
sbin/hadoop-daemon.sh start datanode
sbin/hadoop-daemon.sh start nodemanager
启动yarn
sbin/start-yarn.sh
集群基本测试
服务是否启动,是否可用,简单的应用
hdfs
读写操作
yarn
运行一个程序 run jar
mapreduce
bin/yarn jar share/hadoop/input output_path
集群基准测试
测试集群的性能
hdfs
写数据
读数据
监控集群
cloudera
cloudera manager
部署、安装集群
监控集群
配置、同步集群
预警集群
集群的时间需要同步
确定一台机器
作为时间服务器
所有的机器与这台机器进行定时的同步
比如,每天十分钟同步一次时间
ntp时间同步服务
vim /etc/ntp.conf
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
service ntpd status
service ntpd start
永久启动
chkconfig ntp on
3.2 分布式服务框架 zookeeper
3.3 HA
NameNode Active
NameNodeStandby (Standby:备用品)
SPOF 单点故障
配置HA的要点
share edits:JournalNode
NameNode Active、NameNode Standby
client -> proxy
fence:同一时刻仅仅有一个NameNode对外提供服务
HA规划Cluster
192.168.217.131 | 192.168.217.132 | 192.168.217.133 |
---|---|---|
hadoop-senior | hadoop-senior02 | hadoop-senior03 |
NameNode | NameNode | |
ZKFC | ZKFC | |
JournalNode | JournalNode | JournalNode |
DataNode | DataNode | DataNode |
- 有HA的话,就不需要SecondaryNode。因为不用下次启动,当前NameNode(active)不可用时,会切到NameNode(standby);也不需要SecondaryNode合并 fsimage与edits文件,NameNode(standby)会进行合并。
联盟:可以有多个NameNode,每个NameNode管理自己的DataNode
使用 sshfence
两个NameNode之间能够ssh无密码登录
131 -> 132 ssh
132 -> 131 ssh
- 格式化只会影响 NameNode,不会对 DataNode 起作用,格式化是抽象概念,会建立 fsimage 和 edites 文件。开始时, HA 的其他 NameNode 只需要同步格式化的 NameNode 上的数据就可以了。
bin/hdfs haadmin
HA
自动故障转移 需要 zookeeper
failover
启动后都是 standby
选举一个为active
监控
ZKFC failoverController
高级特性
HA QJM
联盟
快照
集中式缓存管理
分布式拷贝
当hadoop版本号不同时,要使用HFTP
hadoop distcp -i hftp://sourceFS:50070/src hdfs://destFS:8020/dest
YARN HA
ResourceManager
管理机器资源
分配调度资源
NodeManager
应用
云盘存储系统
三大发行版本
项目实战
版本
apache : 实际使用的并不多,最原始(基础)的版本
cloudera :
Hortonworks :看文档,文档写的好
日志分析
分析日志各各字段
清晰日志
数据量 : 40、50G内容
数据符合要求
实际情况:数据不符合要求
数据质量
对原始数据进行清洗 – mapreduce
往往数据的不合格,导致应用程序出问题,空指针异常