Hadoop技术 —— 脱自于Google的三篇论文(大数据软件一般都要求7*24小时不宕机)
把大数据中遇到的两个核心问题(海量数据的存储问题和海量数据的计算问题)全部解决了
一、Hadoop内部的三个核心组件
1、HDFS:分布式文件存储系统
分布式思想解决了海量数据的分布式存储问题
三个核心组件组成
- NameNode:主节点
- 存储整个HDFS集群的元数据(目录结构)
- 管理整个HDFS集群
- DataNode:数据节点/从节点
- 存储数据的,DataNode以Block块的形式进行文件存储
- SecondaryNameNode:小秘书
- 帮助NameNode合并日志数据的(元数据)
2、YARN:分布式资源调度系统
解决分布式计算程序的资源分配以及任务监控问题
Mesos:分布式资源管理系统(YARN的替代品)
两个核心组件组成
- ResourceManager:主节点
- 管理整个YARN集群的,同时负责整体的资源分配
- NodeManager:从节点
- 真正负责进行资源提供的
3、MapReduce:分布式离线计算框架
分布式思想解决了海量数据的分布式计算问题
4、Hadoop Common(了解即可)
二、Hadoop技术诞生的一个生态圈
数据采集存储
flume、Kafka、hbase、hdfs
数据清洗预处理
MapReduce、Spark
数据统计分析
Hive、Pig
数据迁移
sqoop
数据可视化
ercharts
zookeeper
三、主要围绕Apache的Hadoop发行版本来学习
官网:https://hadoop.apache.org
apache hadoop发行版本
- hadoop1.x
- hadoop2.x
- hadoop3.x
- hadoop3.1.4
四、Hadoop的安装的四种模式
hadoop软件中HDFS和YARN是一个系统,而且是一个分布式的系统,同时他们还是一种主从架构的软件。
第一种:本地安装模式:只能使用MapReduce,HDFS、YARN均无法使用 —— 基本不用
第二种:伪分布安装模式:hdfs和yarn的主从架构软件全部安装到同一个节点上
第三种:完全分布式安装模式:hdfs和yarn的主从架构组件安装到不同的节点上
第四种:HA高可用安装模式:hdfs和yarn的主从架构组件安装到不同节点上,同时还需要把他们的主节点多安装两三个,但是在同一时刻只能有一个主节点对外提供服务 —— 借助Zookeeper软件才能实现
修改配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-env.sh、mapred-site.xml、yarn-site.xml、yarn-env.sh、workers、log4j.properties、capacity-scheduler.xml、dfs.hosts、dfs.hosts.exclude
五、Hadoop的伪分布安装流程
1、需要在Linux上先安装JDK,Hadoop底层是基于Java开发的
- 环境变量的配置主要有两个地方可以配置
/etc/profile:系统环境变量
~/.bash_profile:用户环境变量
环境变量配置完成必须重新加载配置文件
source 环境变量文件路径
- 1
- 2
- 3
- 4
2、配置当前主机的主机映射以及ssh免密登录
3、安装本地版本的Hadoop
- 上传 —— 使用xftp将Windows下载好的
hadoop-3.1.4.tar.gz
传输到/opt/software目录下 - 解压 ——
tar -zxvf hadoop-3.1.4.tar.gz -C /opt/app
- 配置环境变量
vim /etc/profile
export HADOOP_HOME=/opt/app/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
4、安装伪分布式版本的Hadoop
修改各种各样的hadoop配置文件即可
- hadoop-env.sh 配置Java的路径
vim hadoop-env.sh
#第54行
export JAVA_HOME=/opt/app/jdk1.8.0_371
#第58行
export HADOOP_HOME=/opt/app/hadoop-3.1.4
#第68行
export HADOOP_CONF_DIR=/opt/app/hadoop-3.1.4/etc/hadoop
#最后一行
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- core-site.xml 配置HDFS和YARN的一些共同的配置项
- 配置HDFS的NameNode路径
- 配置HDFS集群存储的文件路径
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://single:9000value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/opt/app/hadoop-3.1.4/metaDatavalue>
property>
<property>
<name>hadoop.proxyuser.root.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.root.groupsname>
<value>*value>
property>
configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- hdfs-site.xml 配置HDFS的相关组件
- 配置NameNode的web访问路径、DN的web访问网站,SNN的web访问路径等等
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue>
property>
<property>
<name>dfs.namenode.http-addressname>
<value>0.0.0.0:9870value>
property>
<property>
<name>dfs.datanode.http-addressname>
<value>0.0.0.0:9864value>
property>
<property>
<name>dfs.secondary.http-addressname>
<value>0.0.0.0:9868value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>/opt/app/hadoop-3.1.4/metaData/dfs/name1,/opt/app/hadoop-3.1.4/metaData/dfs/name2value>
property>
configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- mapred-env.sh 配置MR程序运行时的关联的软件(Java YARN)路径
vim mapred-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371
- 1
- 2
- 3
- mapred-site.xml 配置MR程序运行环境
- 配置将MR程序在YARN上运行
vim mapred-site.xml
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>yarn.app.mapreduce.am.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.map.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.reduce.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.map.memory.mbname>
<value>250value>
property>
<property>
<name>mapreduce.map.java.optsname>
<value>-Xmx250Mvalue>
property>
<property>
<name>mapreduce.reduce.memory.mbname>
<value>300value>
property>
<property>
<name>mapreduce.reduce.java.optsname>
<value>-Xmx300Mvalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>single:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>single:19888value>
property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- yarn-env.sh 配置YARN关联的组件路径
vim yarn-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371
- 1
- 2
- 3
- yarn-site.xml 配置YARN的相关组件
- 配置RM、NM的web访问路径等等
vim yarn-site.xml
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>singlevalue>
property>
<property>
<name>yarn.application.classpathname>
<value>
/opt/app/hadoop-3.1.4/etc/hadoop,
/opt/app/hadoop-3.1.4/share/hadoop/common/*,
/opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
value>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
<property>
<name>yarn.log.server.urlname>
<value>http://single:19888/jobhistory/logsvalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- workers/slaves 配置HDFS和YARN的从节点的主机
- 配置DN和NM在哪些节点上需要安装
vim workers
single
- 1
- 2
- 3
- log4j.properties —— 配置Hadoop运行过程中日志输出目录
vim log4j.properties
#第19行
hadoop.log.dir=/opt/app/hadoop-3.1.4/logs
#指定Hadoop运行过程中日志输出目录
- 1
- 2
- 3
- 4
六、格式化HDFS集群
hdfs namenode -format
七、启动HDFS和YARN
-
HDFS
- start-dfs.sh
报错
解决方案:
vim /etc/profile #在最后一行加入以下内容 # HADOOP 3.X版本还需要增加如下配置 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root #然后使配置文件生效 source /etc/profile
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- stop-dfs.sh
- 提供了一个web访问网站,可以监控整个HDFS集群的状态信息
http://ip:9870 hadoop3.x
ip:50070 hadoop2.x
-
yarn
- start-yarn.sh
- stop-yarn.sh
- 提供了一个web网站,可以监控整个YARN集群的状态:
http://ip:8088
八、Hadoop的完全分布式安装
1、克隆虚拟机
三台虚拟机需要配置IP、主机名、主机IP映射、ssh免密登录、时间服务器的安装同步、yum数据仓库更换为国内镜像源
时间服务器chrony的安装同步
yum install -y chrony
- 1
先配置主服务器
vim /etc/chrony.conf
在第7行添加allow 192.168.31.0/24
再配置两台从服务器
vim /etc/chrony.conf
就将3 - 6行的server删除后,添加一行server node1 iburst
开启服务
2、安装JDK
此处省略,如需请查看之前博客
3、安装Hadoop完全分布式
- hdfs.site.xml
<configuration>
<property>
<name>dfs.replicationname>
<value>3value>
property>
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>node3:9868value>
property>
<property>
<name>dfs.permissions.enabledname>
<value>falsevalue> property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-checkname>
<value>truevalue>
property>
configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- yarn.site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.hostnamename>
<value>node2value>
property>
<property>
<name>yarn.application.classpathname>
<value>
/opt/app/hadoop-3.1.4/etc/hadoop,
/opt/app/hadoop-3.1.4/share/hadoop/common/*,
/opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
/opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
/opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
/opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
value>
property>
configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- mapred-site.xml
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>yarn.app.mapreduce.am.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.map.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.reduce.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
共需配置九个相关文件
然后将node1上的/opt/app发送到node2和node3节点上的/opt上
scp -r /opt/app root@node2:/opt
4、格式化HDFS
namenode所在节点格式化
hdfs namenode -format
5、启动HDFS和YARN
1、 HDFS是在namenode所在节点启动(node1)
2、YARN是在RM所在节点启动(node2)
评论记录:
回复评论: