Hadoop-基础
一、基本概念
1.计算机的一些概念
计算机系统可以粗糙的分成三个层次:底层系统,中间层,应用层
底层系统,也叫系统内核(kernel),如Linux/UNIX、Windows NT(Windows New Technology)
中间层是shell层,叫命令解释层,是底层系统与用户交互的界面;
有图形化的shell:如Windows Explorer;
命令行shell:如command、cmd.exe、PowerShell
2.Hadoop组成
- Hadoop 1.x:MapReduce,HDFS,COMMON
- Hadoop 2.x:MapReduce,Yarn,HDFS,COMMON
- 分别为:计算、资源调度、数据存储、辅助工具
- 2.x版本是将1.x的MapReduce拆成两部分
2.1 HDFS架构
- NameNode(NN):类似目录、索引
- DataNode(DN):存数据的地方,可以分到各个硬盘里面
- Secondary NameNode(2NN):监控整个HDFS架构的程序,NN报废了,2NN并不能恢复NN
2.2 Yarn架构
用来调用CPU、内存资源等
Resource Manager(RM):只有一个,用来处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度
- NodeManager(NM):管理单个节点的资源、处理RM的命令、处理ApplicationMaster的命令
- ApplicationMaster:负责任务,即Job的整个生命周期:与NM通信,监控Job的所有状态
- Container:容器,封装了CPU、内存、网络、磁盘等资源
2.3 MapReduce
- 分Map、Reduce两个阶段,是Hadoop开发的重点
二、安装虚拟机
1.准备软件
- 下载VMware15、Centos8、Hadoop3.1.3、JDK1.8.151
- 当然也可以用尚硅谷教程的版本,百度网盘提取码:5a50
2.安装虚拟机
安装VMware15,注意15.5.5的版本有点bug,大小写失灵。建好虚拟机后,在
vmx
的文件中加入mks.win32.useInjectedMagic = "FALSE"
就可以解决这里先建立一台名为
hadoop
的虚拟机,配置好文件,作为备份,然后再对这台虚拟机copy
1 | 在hadoop虚拟机里关闭防火墙 |
- 在root用户下创建两个文件夹
1 | mkdir /opt/software /opt/module |
- 给user用户超级权限,以后使用user这个用户来操作
1 | vim /etc/sudoers |
- 更改host,方便以后集群互项认识
1 | 查看IP地址,其实是看不到的 |
- 改静态IP,免得重启后IP换了,hosts失效
1 | sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 |
- 改主机名
1 | sudo vim /etc/sysconfig/network |
使用VMware快照,克隆出三台虚拟机hadoop104、105、106,分别改IP、主机名
准备分发脚本
1 | scp -r hadoop:/opt/module/hadoop-3.1.3 hadoop104:/opt/module |
- 配置SSH,方便以后分发东西和使用
notepad++
来编辑内容。SSH,secure shell,安全外壳协议,非对称加密实现身份验证
1 | 生成SSH |
3.集群配置
- 集群的配置规划
- HDFS有NN、DN、2NN
- YARN有RM、NM
- 真实情况下,DN和NM是在同一台机器上的(共三个节点、即三台机器)
- NN、2NN、RM各自一台机器,所以需要六台机器
- 但是六台虚拟机所需要的内存太大了,所以把NN、2NN、RM分配到下面三台机器
- 其中hadoop虚拟机不用了
hadoop104 | hadoop105 | hadoop106 | |
---|---|---|---|
HDFS | DN、NN | DN | DN、2NN |
YARN | NM | NM、RM | NM |
- 接着安装JAVA和Hadoop,同样的,我现在hadoop虚拟机上进行
1 | 将hadoop-2.10.0.tar.gz和jdk-8u151-linux-x64.tar.gz复制到/opt/software |
- 配置环境变量
1 | sudo vim /etc/profile |
- 安装好之后,将上面的东西分发到集群中的机器中去
4.hadoop配置
- 集群要配置以下几个文件
1 | # core-site.xml |
- 配置DataNode和NodeManager
1 | Hadoop在3.0之后将slaves改成workers了 |
- 配置历史服务器、日志群集
1 | # 在mapred-site.xml里加入 |
- 修改完之后,记得将配置分发到每一台机器中去。
5.集群时间同步
- 集群时间同步,让所有机器的时间一致
- ntp协议,太繁琐了,直接看视频教程吧,我没管这个了
6.maven
- 解压maven包
1 | tar -zxvf apache-maven-3.0.5-bin.tar.gz -C /opt/module/ |
- 配置镜像源
1 | # 在/opt/module/apache-maven-3.0.5/conf/settings.xml里面 |
- 配置profile
1 | MAVEN HOME |
7.ant
- 安装ant
1 | tar -zxvf apache-ant-1.9.9-bin.tar.gz -C /opt/module/ |
- 环境变量
1 | ANT_HOME |
8.安装glibc等
1 | [root@hadoop101 apache-ant-1.9.9]# yum install glibc-headers |
- 解压protobuf
1 | [root@hadoop101 software]# tar -zxvf protobuf-2.5.0.tar.gz -C /opt/module/ |
- 环境变量
1 | #LD_LIBRARY_PATH |
9.hdoop启动
- 注意,每次开机后一定要格式化namenode
1 | hadoop namenode -format |
- 启动
1 | start-all.sh |
- 关闭
1 | stop-all.sh |
- 如果namenode挂了,其他节点的东西也一样
1 | hadoop-daemon.sh start namenode |
- 如果发现resourcemanage没有启动,要么手动启动,要么修改
start-all.sh
的代码,第三种方法就是在RM的机器上执行start-all.sh