对于hadoop而言,启动的主要进程,cluster中的daemon:
HDFS:
namenode,NN (对hadoop来讲,nn是在内存中存储元数据的,不断根据客户端请求和本地文件改变修改元数据,包含每个文件有多少data block,存储在哪个data、 node上 映射关系,有两种映射表,每个文件有多少个块,块在哪个节点上存放,
为了避免主机宕机,内存数据丢失,元数据的变化都会直接写入到editlog,合并到fsimage,所以关机以后,此前的数据依然有,会读取nn的fsimage,从而恢复此前的元数据到内存中
但如果文件系统很大,可能会出现问题,不仅要fsimage的信息还要其他DN报告的信息是一致的,所有的data node 报告完毕,十几分钟过去,所以恢复时间可能比较长)
一旦NN崩溃,恢复的时候还需要从fsimage,立即配置一个主机,速度慢,所以SNN可以做备用
secondary name node,SNN, 让SNN通过fsimage恢复这些数据(如果NN正常,SNN一般没什么事,除了不挺向NN上获取fsimage和editlog,合并的时候editlog在主节点NN还是不断变化的,所以snn要指定checkpoint来指明是哪个位置,检查点
真正的分布式需要让NN知道有多少个从节点DN(slave文件来定义),官方建议是三四十个节点)
data node,DN 存数据的(存放数据的磁盘是否需要raid,自带replication就没必要额外再冗余了)
/data/hadoop/hdfs/{nn,snn,dn}
nn(主要数据有两个): fsimage文件系统映像, editlog编辑日志
hdfs的三个进程
YARN:全局资源管理进程
ResourceManager
NodeManager 管理yarn键中的各从节点上是如何运行mapreduce等运行于container当中的任务的
运行hdfs集群主要靠的是一个脚本,hadoop -daemon.sh start|stop(会需要到每个DN节点找到这些启动起来)
如果需要基于主控节点来运行各从节点相关进程的话,就需要配置主控节点用来运行程序的用户得有相应的权限,基于秘钥的认证方案,链接至每一个节点,是否可以手动启动每一个节点呢,
yarn-daemon.sh start|stop
**在主控节点上要配置hdfs用户能够无秘钥登录剩余所有节点,不光从,还有SNN辅助名称节点,
对于ResourceManager要让yarn用户无秘钥认证,复制各nN节点,来启动相关进程
SNN的主要作用是辅助NN,而且NN宕机,SNN可以快速恢复,所以SNN和NN部署在一个节点是完全没有意义的,所以是各自分开的独立节点
要保证数据块有三个副本,DN的需要三个及以上
测试,找三个DN,SNN依然和NN运行在一起
yarn集群的控制节点和NN压力很大,把 ResourceManager放在一起,会发生问题,把jobtracker和ResourceManager独立部署
node manager部署在DN,在DN只需要启动DATE NODE,和node manager进程
在name node节点只需要启动name node进程,secondary name node只需要启动SNN进程,
resource manager节点就需要启动 resource manager进程
只有从节点才会需要运行两个进程(DN,NODE MANAGER) **
四个节点来显示三个DN(dn,node manager) ,一个NN ,SNN ,RM
分布式的系统每一个节点时间应该同步,node1有个别名叫master
先配置java环境,然后配置远程登录
ELK有一个完全的ansible角色定义,马哥都可以提供
每个节点都需要安装openjdk
把环境变量文件复制过去
最好能让用户id号保持一致,不一致就用户名一致
创建master前需要创建用户认证
每个节点都创键
node1master要生成密钥,复制到其他节点的hadoop目录下.ssh目录
试试是否成功
**安装部署前需要创建Hadoop目录、master的dn目录用不到因为不是dn,还需要修改属主属组
**
下载hadoop程序包,创建logs,让属组有写权限
现在同一一个用户了,就不使用yarn了
修改配置文件,之前拷贝的覆盖
master指的是你hdfs的master
修改冗余数值
这个配置文件是不需要修改的
分布式需要把hdfs的localhost改成主节点
尽量在部署分布式的时候使用主机名
在节点上安装hadoop并提供配置
创建目录,只有dn有用,修改属组属主
第一个节点就可以了
用hadoop的身份去scp配置文件,三个节点node2,3,4
定义环境
启动服务,先要格式化一次
**启动yarn集群有两种
1.手动在个节点启动服务
2.使用集群启动的脚本来启动 **
namenode只是主节点,现在主节点应该有数据了
给主节点加上密码
默认分块是64M,satrt-dfs.sh,stop-dfs.sh
使用jps查看其他节点是否启动
创建目录,put文件
其他节点看一下
启动yarn节点
其他从节点就有node manager
依然会有webgui的,50070,8088
现在就有三个live node
上传第二个文件
如果你的文件很小,这个文件就用一个块存放了,是不被切割的,一个块只能属于一个文件,虽然是64m一个块,但是并不会占那么大,除非你是大文件分隔
传送一个大文件上去
切割成多个块了
还能查看日志
内存显示24G,因为有三个node manager,每个node manager运行的物理机有8G内存,假设自己有24G可用
尝试运行一个任务看看,yarn jar 来运行 example
wordcount统计test下的fstab以及function,统计好的记录保存在wc
containers running启动了几个容器,memory total 用了多少次
运行的结果保存在wc下
停止用哪个stop-dfs,文档中使用分用户进行的,实际我们实验是用的hadoop
能完成hadoop的管理,还可以完成文件系统的检测
有很多子命令
删除rm state存储的
时间线服务器主要做任务编排的
rm是 resource manager admin 强大的管理工具
java程序有多种打包格式,jar是一种
尝试运行application相关报告的
容器相关信息
报告节点的
提交 队列的
打印日志的
显示java程序加载的类搜索路径
获取每一个守护进程的日志级别
用来管理yarn中的各application
可以列出作业,但list只列出活动中的作业,appstates=all显示所有的作业
status+applicationid,能显示对应状态报告
程序名
程序类型
运行哪个队列
启动时间
完成时间
保存node相关信息的
列表和当前状态,number of running -containers 运行的容器数量
running只显示处于running状态的节点 all显示所有节点,decommissined找不到,lost链接不到
打印指定节点的相关信息的
复制一个nodeid
显示node节点的相关报告
显示日志,用于已经从完成的yarn应用程序来获取日志信息
一定是运行结束的application
要启动这个
运行java程序到哪些路径下加载
RMadmin才是真正使用管理的作用,是客户端程序,可用于刷新访问控制策略,所以对resourcemanager外围的所有配置都通过这个来实现,清空缓存,重载ACL,都可以用RMadmin刷新选项,‘
除非有特殊需要否则不要refresh
用于查看或更新rm和nm守护进程的日志级别、
getlevel获取日志级别
setlevel设置级别
如何去运行yarn application
退出会将自己的所此前分配的资源告诉rm,rm来收回资源
官方有提供部署工具https://hadoop.apache.org/old/
支持hadoop安装配置,作业启动http://ambari.apache.org