概述
Hadoop包括HDFS(文件系统),yarn(任务调配),mapReduce(编程模型,大数据并行运算),Hadoop集群其实就是HDFS集群。
- HDFS其实就是一个分布式的文件系统 。 HDFS分有NameNode和DataNode,NameNode是整个文件系统目录,基于内存存储,存储的是一些文件的详细信息,比如文件名、文件大小、创建时间、文件位置等。Datanode是文件的数据信息,也就是文件本身,不过是分割后的小文件。
- Yarn是一种新的 Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
- MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
简单叙述一下HDFS、Hive和HBase之间的关系 HDFS存储从数据源抽取到的数据,Hive主要解决数据处理和计算问题Hbase主要解决实时数据查询问题。 通过ETL工具将数据源抽取到HDFS存储;通过Hive清洗、处理和计算原始数据;HIve清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase,数据应用从HBase查询数据。 在大数据架构中,HDFS、Hive和HBase数据流一般如下图:
1. 规划
主机名 | IP | 用户名 | HDFS | YARN |
---|---|---|---|---|
hadoop01 | 172.16.126.71 | hadoop | NameNode | ResourceManager |
hadoop02 | 172.16.126.72 | hadoop | DataNode、SecondaryNameNode | NodeManager |
hadoop03 | 172.16.126.61 | hadoop | DataNode | NodeManager |
hadoop04 | 172.16.126.62 | hadoop | DataNode | NodeManager |
安装包下载地址: Index of /hadoop/common
2.初始化
1、配置主机名
举例:在hadoop01服务器上 #hostnamectl set-hostname hadoop01
2、编辑/etc/hosts
172.16.126.71 hadoop01 172.16.126.72 hadoop02 172.16.126.61 hadoop03 172.16.126.62 hadoop04
3、创建hadoop用户
创建用户 #useradd hadoop 重置hadoop密码 #passwd hadoop
4、通过hadoop用户配置秘钥互信(hadoop01服务器执行即可)
创建秘钥 #ssh-keygen -t rsa 分发秘钥 #ssh-copy ssh-copy-id hadoop02 #ssh-copy ssh-copy-id hadoop03 #ssh-copy ssh-copy-id hadoop04
5、关闭selinux及防火墙
关闭selinux # setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 关闭防火墙 #systemctl stop firewalld &&systemctl disable firewalld
6、 安装java
安装java可以采用yum安装或者手工配置的方式,这里采用yum安装
yum install jdk -y
7、解压hadoop-3.3.4.tar.gz安装包至/data/,并重命名为hadoop目录,实际部署目录是/data/hadoop/
#tar zxvf hadoop-3.3.4.tar.gz -C /data/ #mv /data/hadoop-3.3.4 /data/hadoop
8、配置环境变量/etc/profile,添加的内容如下:
export HADOOP_HOME=/data/hadoop/ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-1.el7_9.x86_64/jre/ export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin
环境变量添加完后加载环境变量
#source /etc/profile
9、创建文件存储目录
hadoop01
#mkdir /data/hadoop/hdfs/full/dfs/name -p
hadoop02
#mkdir /data/hadoop/hdfs/full/dfs/namesecondary -p #mkdir /data/hadoop/hdfs/full/dfs/data -p
hadoop03
#mkdir /data/hadoop/hdfs/full/dfs/data -p
hadoop04
#mkdir /data/hadoop/hdfs/full/dfs/data -p
3.配置
配置时需要修改“/data/hadoop/etc/hadoop”目录下的配置文件,其中HDFS涉及到的配置文件包括workers、core-site.xml、hdfs-site.xml,Yarn涉及到的配置文件包括yarn-site.xml, mapReduce 涉及到的配置文件包括mapred-site.xml、。
<!--这5个文件在hadoop01修改,修改完成后分发至其他机器。-->
-
修改workers文件 该文件内容可以指定某几个节点作为数据节点,默认为localhost,将其删除并修改为如下内容:
hadoop02 hadoop03 hadoop04
2.修改core-site.xml文件
fs.defaultFS:指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop01:9000</value> </property> </configuration>
3.hdfs-site.xml文件
dfs.secondary.http.address:secondarynamenode运行节点的信息,应该和namenode存放在不同节点 dfs.repliction:hdfs的副本数设置,默认为3 dfs.namenode.name.dir:namenode数据的存放位置,元数据存放位置 dfs.datanode.data.dir:datanode数据的存放位置,block块存放的位置
<property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/hdfs/full/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/hdfs/full/dfs/data</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop02:50090</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>/data/hadoop/hdfs/full/dfs/namesecondary</value> </property>
4.修改mapred-site.xml文件 vim mapred-site.xml mapreduce.framework.name:指定mapreduce框架为yarn方式 mapreduce.jobhistory.address:指定历史服务器的地址和端口 mapreduce.jobhistory.webapp.address:查看历史服务器已经运行完的Mapreduce作业记录的web地址,需要启动该服务才行
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop01:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop01:19888</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/data/hadoop</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/data/hadoop</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/data/hadoop</value> </property>
5.修改yarn-site.xml文件
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
6.配置hadoop-env.sh,添加以下内容
export JAVA_HOME=/etc/alternatives/ export HADOOP_HOME=/data/hadoop/
7.分发文件 修改完上面五个文件后,将hadoop01点上的hadoop文件复制到各个结点上。
#scp -r /data/hadoop/etc/hadoop/* hadoop02:/data/hadoop/etc/hadoop/ #scp -r /data/hadoop/etc/hadoop/* hadoop03:/data/hadoop/etc/hadoop/ #scp -r /data/hadoop/etc/hadoop/* hadoop04:/data/hadoop/etc/hadoop/
8.授权hadoop安装目录
#chown -R hadoop /data/hadoop/
4.启动hadoop集群
初始化、启动及停止,只需要在hadoop01执行即可
1.Hadoop初始化
hdfs namenode -format
在初始化过程中,只要看到上面红框里面的信息,有个successfully formatted说明初始化成功。
2.Hadoop集群启动
#start-dfs.sh #start-yarn.sh #mapred --daemon start historyserver
3.WEB访问
HDFS的访问地址:http://172.16.126.71:9870/
Yarn的访问地址:http://172.16.126.71:8088/cluster
4.关闭集群 接下来就是关闭集群,输入以下命令:
#stop-yarn.sh #stop-dfs.sh #mapred --daemon stop historyserver