Hadoop:
下载网址:https://archive.apache.org/dist/hadoop/common
什么是hadoop:用于数据存储和数据分析计算的分布式系统基础架构
创始人:Doug Cutting
组成
-
Hadoop HDFS:一个高可靠、高吞吐量的分布式系统文件
-
Hadoop MapReduce:一个分布式的离线并行计算框架
-
Hadoop YARN:作业调度与集群资源管理的框架
-
Hadoop Common:支持其他模块的工具模块
Yarn架构
-
NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
-
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
-
Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
Yarn架构
-
ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度;
-
NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
-
ApplicationMaster:数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
-
Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
MapReduce架构
MapReduce将计算过程分为两个阶段:
Map和Reduce
-
Map阶段并行处理输入数据
-
Reduce阶段对Map结果进行汇总
大数据技术生态体系
Hadoop安装搭建
准备工作:
1.设值静态IP
1 # 检查网卡配置 2 vim /etc/sysconfig/network-scripts/ifcfg-ens33 3 # 将网卡启动方式设置为none或者static 4 # 如果是dhcp 则每次重启都会重新分配IP 5 BOOTPROTO=none 6 或者 7 BOOTPROTO=STATIC 8 # 修改之后需要重启网络 9 systemctl restart network
2.修改主机名
1 # 查看当前主机名 2 hostname 3 # 修改主机名 4 hostnamectl set-hostname 主机名
3.关闭防火墙
1 # 关闭防火墙 2 systemctl stop firewalld 3 # 禁用防火墙的开机启动 4 systemctl disable firewalld 5 # 查看防火墙服务状态 6 systemctl status firewalldCOPY
4.安装JDK
- 上传安装包到linuc服务器
压缩包存放路径
/opt/java/tar
- 解压安装包
路径
/opt/java/modul
解压指令:
1 tar -zxvf hadoop-2.7.7.tar.gz -C /opt/java/modul 2 # tar命令用来解压tar类型的存档文件 3 # z 进行gzip格式文件的压缩或解压 4 # x 解开压缩包 5 # v 显示解压或压缩细节 6 # f 将文件解压到当前目录 7 # 使用mv将文件夹修改为更简短的名称 8 # 软件名称-软件版本
完全分布式搭建:
1.克隆虚拟机
配置环境变量:
# 可以在三个文件中配置环境变量 # 系统环境变量 /etc/profile # 当前用户的环境变量 ~/.bashrc ~/.bash_profile
-
将服务器克隆为3台,并分别设置静态IP,分别设置主机名
192.168.222.81
192.168.222.82
192.168.222.83
-
设值IP和主机名映射
1 # Linux中使用/etc/hosts文件记录IP和主机名的映射 2 # 配置映射是为了将来访问其他机器时不需要记忆ip地址 3 # 配置映射 可以在所有的软件配置文件中使用主机名代替IP,将来IP改动时,只需要改动hosts文件,不需要改动软件配置文件 4 vim /etc/hosts 5 192.168.222.81 bd01 6 192.168.222.82 bd02 7 192.168.222.83 bd03
-
设值SSH免密登录
1 # 分布式程序中 集群之间需要进行大量的数据传输和通信,需要使用SSH协议进行远程连接,如果每次都需要验证密码,效率极差 2 # 可以通过配置免密登录 实现集群内部通畅的通信 3 # 1.移除之前的残留文件 4 rm -rf ~/.ssh 5 # 2.创建密钥文件 6 ssh-keygen -t rsa 7 # 3.分发密钥 8 ssh-copy-id bd0801 9 yes 10 密码 11 ssh-copy-id bd0802 12 yes 13 密码 14 ssh-copy-id bd0803 15 yes 16 密码
安装完全分布式HDFS服务
http://archive.apache.org/ apache组件下载
-
关于版本:
-
几乎所有的大数据组件,版本都有三组数字组成
x.y.z
-
x : 大版本,通常x不同的版本之间,API有差异,不互相兼容
-
y : 中版本,通常x相同y不同的版本之间,api相互兼容,会有少量的优化和重构
-
z : 小版本,通常x,y相同,z不同的版本之间,功能和性能完全一样,修复了一些紧急的漏洞,不要使用小版本为0的版本
-
-
2.7.x是目前企业中使用的相对稳定版本,应用最广泛,与Spark兼容性优良
-
2.6.x 和3.0.x也是企业中常见版本
修改配置文件
-
hadoop-env.sh
1 [root@bd0801 /]# cd opt/java 2 [root@bd0801 java]# cd modul 3 [root@bd0801 modul]# cd hadoop-2.7.7/ 4 [root@bd0801 hadoop-2.7.7]# cd etc/hadoop/ 5 [root@bd0801 hadoop]# cat hadoop-env.sh
设值java_home
export JAVA_HOME=/opt/java/modul/jdk1.8.0_291
-
core-site.xml(namenode)
1 <configuration> 2 <property> 3 <!-- 设置Hadoop用来存储数据的目录,设置到Hadoop安装目 4 录中 --> 5 <name>hadoop.tmp.dir</name> 6 <value>/opt/java/modul/hadoop-2.7.7/data</value> 7 </property> 8 <property> 9 <!-- 设置HDFS使用的默认连接url --> 10 <name>fs.defaultFS</name> <value>hdfs://bd0801:8020</value> 11 </property> 12 </configuration>
-
hdfs-site.xml(secondnamenode)
1 <configuration> 2 <property> 3 <!-- 配置SecondaryNameNode启动的机器 --> 4 <name>dfs.namenode.secondary.http-address</name> 5 <value>bd0803:50090</value> 6 </property> 7 8 </configuration>
-
slaves
设置启动DataNode服务的节点
1 bd0801 2 bd0802 3 bd0803
分发安装包
scp:安全拷贝,可以实现服务器与服务器之间的数据拷贝
-r: 递归
1 cd modul 2 scp -r hadoop-2.7.7/ bd0802:/opt/java/modul/ 3 scp -r hadoop-2.7.7/ bd0803:/opt/java/modul/ 4 # r 递归发送文件夹 5 # q 静默发送 不显示细节 6 scp -rq 本地文件夹 目标主机:目标路径
配置环境变量
1 echo 'export HADOOP_HOME=/opt/java/modul/hadoop-2.7.7' >> /etc/profile 2 echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/profile 3 source /etc/profile
对Namenode进行格式化
hdfs namenode -format
注意:如果有修改core hdfs 文件,需要删除data 重新格式化
启动集群尝试操作
1 start-dfs.sh 2 [root@bd01 ~]# jps 3 24952 DataNode 4 24827 NameNode 5 [root@bd02 ~]# jps 6 5124 DataNode 7 [root@bd03 ~]# jps 8 20851 DataNode 9 20924 SecondaryNameNode
-
访问NameNode的webUI
192.168.222.81:50070
面试题:
一:常用端口号
hadoop3.x
HDFS NameNode内部通常端口:8020 /9000 /9820
HDFS NameNode对用户的查询端口:9870
Yarn查看任务运行情况的:8088
历史服务器:19888
hadoop2.x
HDFS NameNode内部通常端口:8020 /9000
HDFS NameNode对用户的查询端口:50070
Yarn查看任务运行情况的:8088
历史服务器:19888
二:常用的配置文件
3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers
2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml slaves