Hadoop
Hadoop
- 狭义上
- Apache软件基金会的一款开源软件
- 用java语言实现,开源
- 允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理
- 广义上
- 是围绕Hadoop打造的大数据生态圈
核心组件
- Hadoop HDFS(分布式文件
存储
系统):解决海量数据存储 - Hadoop YARN(集群
资源管理和任务调度
框架):解决任务资源调度 - Hadoop MapReduce(分布式
计算
框架):解决海量数据计算
官方网站
特性优点
- 扩容能力
- 成本低
- 效率高
- 可靠性
架构变迁
- Hadoop 1.0
- HDFS(分布式文件存储)
- MapReduce(资源管理和分布式数据处理)
- Hadoop 2.0
- HDFS(分布式文件存储)
- MapReduce(分布式数据处理)
YARN
(集群资源管理、任务调度)
- Hadoop 3.0(
性能优化
)- 通用方面
- 精简内核、类路径隔离、shell脚本重构
- Hadoop HDFS
- EC纠删码、多NameNode支持
- Hadoop MapReduce
- 任务本地化优化、内存参数自动推断
- Hadoop YARN
- Timeline Service V2、队列配置
- 通用方面
Hadoop集群
- Hadoop集群包括两个集群:
HDFS集群
、YARN集群
- 两个集群
逻辑上分离、通常物理上在一起
- 两个集群都是标准的
主从架构
集群
MapReduce 是个框架,代码层面使用的
集群架构
集群规划
- 角色规划的准则
- 根据软件工作特性和服务器硬件资源情况合理分配
- 比如依赖内存工作的NameNode是不是部署在大内存机器上
- 角色规划注意事项
- 资源上有抢夺冲突的,尽量不要部署在一起
- 工作上需要互相配合的,尽量部署在一起
Server | Plugin |
---|---|
node-1 | namenode、datanode、resourcemanager、nodemanager |
node-2 | secondarynamenode、datanode、nodemanager |
node-3 | datanode、nodemanager |
配置环境
1、防火墙关闭
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开启自启
systemctl disable firewalld.service
2、ssh免密登录
node1执行 ==> node1 | node2 | node3
# 4个回车 生成公钥、私钥
ssh-keygen
# 发送给三台server
ssh-copy-id node-211
ssh-copy-id node-212
ssh-copy-id node-213
3、时间同步
# 更新软件
yum -y install ntpdate
# 时间同步
ntpdate ntp4.aliyun.com
4、工作目录
mkdir -p /export/server/ # 软件安装路径
mkdir -p /export/data/ # 数据存储路径
mkdir -p /export/software/ # 安装包存放路径
5、安装JDK
# 上传安装包到/export/server 解压
cd /export/server
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
# 配置环境变量
vim /etc/profile
# 复制追加
export JAVA_HOME=/hadoop/software/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 重载环境变量
source /etc/profile
# 查看java版本
[root@node-211 software]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
# 复制到其他节点(node-212、node-213)
scp -r /hadoop/software/jdk1.8.0_241/ root@node-212:/hadoop/software/
scp /etc/profile root@node-212:/etc/
6、安装Hadoop
# hadoop-3.3.0-Centos7-64-with-snappy.tar.gz 为已编译的压缩包
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
7、修改配置文件
配置文件位置:/hadoop/software/hadoop-3.3.0/etc/hadoop
1、hadoop-env.sh
# 文件最后添加
export JAVA_HOME=/hadoop/softwware/jdk1.8.0_241
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
2、core-site.xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-211:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data/hadoop-3.3</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
3、hdfs-site.xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node-212:9868</value>
</property>
4、mapred-site.xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR程序历史服务地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node-211:10020</value>
</property>
<!-- MR程序历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node-211:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
5、yarn-site.xml
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node-211</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 是否将对容器实施物理内存限制 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node-211:19888/jobhistory/logs</value>
</property>
<!-- 历史日志保存的时间 7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
6、workers
node-211
node-212
node-213
8、分发Hadoop
1、同步安装包
cd /hadoop/software
scp -r hadoop-3.3.0 root@node-212:/hadoop/software/
scp -r hadoop-3.3.0 root@node-213:/hadoop/software/
2、配置环境变量
# 三台机器都需要配置(复制-发送也可以)
vim /etc/profile
# hadoop
export HADOOP_HOME=/hadoop/software/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
启动集群
- 首次启动HDFS时,必须对其进行格式化操作
- format本质上是初始化工作,进行HDFS清理和准备工作
- (首次启动)格式化 namenode
hdfs namenode -format
- 脚本一键启动
start-all.sh
stop-all.sh
- Web UI
- HDFS 集群:http://node-211:9870/
- YARN 集群:http://node-211:8088/
进程状态
启动完毕之后可以使用jps命令查看进程是否启动成功
日志查看
Hadoop启动日志路径:/export/server/hadoop-3.3.0/logs/
异常处理
自带MR示例出错
- 错误信息
of your hadoop distribution directory}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${full path of your hadoop distribution directory}</value>
</property>
- 解决 mapred-site.xml,增加以下配置
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
格式化集群
# 停止hadoop服务
stop-all.sh
# 删除data中的数据
rm -rf /hadoop/data/*
# 重新格式化
hdfs namenode -format
# 启动hadoop
start-all.sh
评论区