Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • Hadoop

    • Hadoop
    • 环境安装
      • 虚拟机安装前置
      • 修改静态地址
      • 修改主机名
      • 修改hosts
      • 关闭防火墙
      • 创建用户
      • 修改atguigu权限
      • 安装java
      • 安装hadoop
      • SSH免密登陆
        • xsync 脚本
        • 复制ssh免密key
        • 同步环境
      • hadoop配置文件
        • 配置core-site.xml
        • 配置hdfs-site.xml
        • 配置yarn-site.xml
        • 配置mapred-site.xml
        • 配置workers
        • 同步
      • 启动集群
        • dfs启动
        • JPS
      • 配置历史服务器
        • 配置mapred-site.xml
      • 配置日志聚集
        • 配置 yarn-site.xml
      • 配置完成重新同步 并启动
      • 集群时间同步
        • 修改ntp配置文件
        • 修改ntpd文件
        • 其他机器配置
      • 常用端口
        • hadopp2.x和3.x端口变化
        • HDFS
        • Yarn
        • Hbase
        • Hive
        • Zookeeper
    • HDFS
    • winutils
    • IDEA中创建hadoop项目
    • Java操作
    • HDFS的数据流
    • NameNode 工作机制
    • DataNode
    • MapReduce
    • MapReduce原理
    • Yarn
    • Hadoop企业优化
    • Hadoop 新特性
    • 日志
    • Hadoop HA高可用
  • Zookeeper

  • Hive

  • Flume

  • Kafka

  • Azkaban

  • Hbase

  • Scala

  • Spark

  • Flink

  • 离线数仓

  • 青训营

  • DolphinScheduler

  • Doris

  • 大数据
  • Hadoop
Iekr
2021-08-31
目录

环境安装

# 环境安装

https://hadoop.apache.org/docs/stable/ 官方文档

# 虚拟机安装前置

sudo yum install -y epel-release  #额外软件源
sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git wget #安装 psmisc工具包  nc工具包 net-tools工具包 rsync 远程同步  vim编辑器 lrzsz上传下载  ntp时间同步 
1
2

# 修改静态地址

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
#如手写可以 ctrl+alt+tab 补全  
1
2

配置为符合的 记得改 UUID 和 Mac 地址

DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.1.101
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
1
2
3
4
5
6
7
8
9
service network restart
1

# 修改主机名

sudo hostnamectl --static set-hostname hadoop102
1

# 修改 hosts

sudo vim /etc/hosts
1
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108
1
2
3
4
5
6
7
8
9

物理机也改 host

# 关闭防火墙

sudo systemctl stop firewalld
sudo systemctl disable firewalld
1
2

# 创建用户

sudo useradd atguigu
sudo passwd atguigu

reboot
1
2
3
4

# 修改 atguigu 权限

visudo
1
#第91行
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
atguigu   ALL=(ALL)     ALL
1
2
3
4

创建 opt 下的存放目录

cd /opt
sudo mkdir module
sudo mkdir software
sudo chown atguigu:atguigu /opt/module /opt/software
1
2
3
4

# 安装 java

先卸载

rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
1

解压

cd /opt/software/
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
1
2

配置环境变量

sudo vim /etc/profile.d/my_env.sh
1
#JAVA_HOME
#yum 为/usr/lib/jvm/java
export JAVA_HOME=/opt/module/jdk1.8.0_212 
export PATH=$PATH:$JAVA_HOME/bin
1
2
3
4

更新环境变量

source /etc/profile
java -version
1
2

# 安装 hadoop

解压

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
1

配置环境变量

sudo vim /etc/profile.d/my_env.sh
1
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
1
2
3
4

更新

source /etc/profile
hadoop version
1
2

# SSH 免密登陆

生成密钥 全部回车 为空即可

ssh-keygen -t rsa
1

发送密钥 给另外一台主机

ssh-copy-id hadoop102

ssh-copy-id hadoop103

ssh-copy-id hadoop104
1
2
3
4
5

默认存储在 /home/ 用户 /.ssh 文件下

注意:

还需要在 hadoop102 上采用 root 账号,配置一下无密登录到 hadoop102、hadoop103、hadoop104;

还需要在 hadoop103 上采用 atguigu 账号配置一下无密登录到 hadoop102、hadoop103、hadoop104 服务器上。

# xsync 脚本

安装

yum install -y rsync
1

创建 xsync 脚本

cd /home/atguigu
vim xsync
1
2
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done
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
chmod +x xsync
sudo mv xsync /bin/   #将脚本移动到/bin中,以便全局调用
1
2

https://rsync.samba.org/

https://vault.centos.org/6.5/os/x86_64/

安装包安装

wget https://vault.centos.org/6.5/os/x86_64/Packages/rsync-3.0.6-9.el6_4.1.x86_64.rpm
rpm -ivh rsync-3.0.6-9.el6_4.1.x86_64.rpm
1
2

# 复制 ssh 免密 key

cd /home/atguigu
xsync .ssh
1
2

# 同步环境

同步环境变量

sudo xsync /etc/profile.d/my_env.sh
1

同步软件

cd /
xsync opt
1
2

# hadoop 配置文件

cd /opt/module/hadoop-3.1.3/etc/hadoop
1

# 配置 core-site.xml

vim core-site.xml 
1

在 <configuration> 标签中追加

<property>
        <name>fs.defaultFS</name>
    <!-- 配置hdfs默认的地址 -->
        <value>hdfs://hadoop102:8020</value>
    </property>
    <property>
        <!-- 配置hadoop临时存放路径-->
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <!-- 兼容性配置hive -->
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.atguigu.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 配置 hdfs-site.xml

vim hdfs-site.xml
1

同样在 <configuration> 标签中追加

<property>
    <!-- 2nn的地址 -->
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
1
2
3
4
5

# 配置 yarn-site.xml

vim yarn-site.xml
1

同样在 <configuration> 标签中追加

<property>
    <!--设置NodeManager上运行的附属服务,需配置成mapreduce_shuffle才可运行MapReduce程序-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
	<!--设定单个容器可以申领到的最小内存资源-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>2048</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
<!--设定物理节点有4G内存加入资源池-->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</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>

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

# 配置 mapred-site.xml

vim mapred-site.xml
1

同样在 <configuration> 标签中追加

<!--Hadoop对MapReduce运行框架一共提供了3种实现,在mapred-site.xml中通过"mapreduce.framework.name"这个属性来设置为"classic"、"yarn"或者"local"-->
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
1
2
3
4
5

# 配置 workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
1

删除 localhost 文件中添加的内容结尾不允许有空格,文件中不允许有空行。

hadoop102
hadoop103
hadoop104
1
2
3

# 同步

cd ..
xsync hadoop
1
2

# 启动集群

格式化 hdfs

hdfs namenode -format  #在节点机子上
1

启动集群

start-dfs.sh
1

如果报 java 未找到 修改 hadoop.env.sh 文件

vim /opt/module/hadoop-3.1.3/etc/hadoop/hadoop.env.sh
1

修改 JAVA_HOME 为 并同步

export JAVA_HOME=/usr/lib/jvm/java
1

image-20210831074812487

显示这样启动成功

# dfs 启动

在 103 中启动

start-yarn.sh
1

# JPS

JPS
1

# 配置历史服务器

关闭 dfs 和 yarn

stop-yarn.sh  #103
stop-dfs.sh  #102
1
2

# 配置 mapred-site.xml

vi mapred-site.xml
1

同样在 <configuration> 标签中追加

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>
1
2
3
4
5
6
7
8
9
10
11

# 配置日志聚集

# 配置 yarn-site.xml

vim yarn-site.xml
1

同样在 <configuration> 标签中追加

<property>
    <!-- 开启日志聚集-->
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>  
    <!-- 日志服务器-->
    <name>yarn.log.server.url</name>  
    <value>http://${yarn.timeline-service.webapp.address}/applicationhistory/logs</value>
</property>
<property>
    <!-- 日志保存时间-->
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
<property>
    <name>yarn.timeline-service.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.timeline-service.hostname</name>
    <value>${yarn.resourcemanager.hostname}</value>
</property>
<property>
    <name>yarn.timeline-service.http-cross-origin.enabled</name>
    <value>true</value>
</property>
<property>
    <name>yarn.resourcemanager.system-metrics-publisher.enabled</name>
    <value>true</value>
</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

# 配置完成重新同步 并启动

cd ..
xsync hadoop/
1
2

重新启动

start-dfs.sh  #102

start-yarn.sh  #103

mapred --daemon start historyserver  #102 启动历史服务器
1
2
3
4
5

配置完成后不要同步整个 hadoop 文件夹 只需要 etc 配置文件夹 千万不要同步 data 文件夹

如想修改 data 路径

vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml  #hadoop.data.dir
1

如果想重新按配置开 删除掉 logs 文件夹里的东西 重新格式化 HDFS 再启动

# 集群时间同步

在所有节点关闭 ntp 服务和自启动

建议 root 用户下操作

su -
sudo systemctl stop ntpd
sudo systemctl disable ntpd
1
2
3

# 修改 ntp 配置文件

vim /etc/ntp.conf
1
restrict 192.168.130.2 mask 255.255.255.0 nomodify notrap  #去掉#号修改即可

#加上井号
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

#添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10
1
2
3
4
5
6
7
8
9
10
11

# 修改 ntpd 文件

vim /etc/sysconfig/ntpd
1
#追加
SYNC_HWCLOCK=yes
1
2
#重启服务
systemctl start ntpd

#开机启动
systemctl enable ntpd
1
2
3
4
5

以上修改文件在 102 进行

# 其他机器配置

切换 root 用户 进行

su -
crontab -e
1
2
#追加
*/1 * * * * /usr/sbin/ntpdate hadoop102
1
2
date  #查看当前时间是否同步
1

# 常用端口

# hadopp2.x 和 3.x 端口变化

分类 hadoop2.x Hadoop3.x
访问 HDFS 端口 50070 9870
访问 MR 执行情况端口 8088 8088
历史服务器 19888 19888
客户端访问集群端口 9000 8020

image-20211205001142660

# HDFS

组件 节点 端口 配置 用途说明
HDFS Namenode 9870 dfs.namenode.http-address http 服务的端口
HDFS NameNode 9871 dfs.namenode.https-address https 服务的端口
HDFS NameNode 9820 fs.defaultFS 接收 Client 连接的 RPC 端口,用于获取文件系统 metadata 信息。
HDFS DataNode 9866 dfs.datanode.address datanode 服务端口,用于数据传输
HDFS DataNode 9864 dfs.datanode.http.address http 服务的端口
HDFS DataNode 9865 dfs.datanode.https.address https 服务的端口
HDFS DataNode 9867 dfs.datanode.ipc.address ipc 服务的端口
HDFS journalnode 8485 dfs.journalnode.rpc-address RPC 服务
HDFS journalnode 8480 dfs.journalnode.http-address HTTP 服务

# Yarn

组件 节点 端口 配置 用途说明
YARN ResourceManager 8032 yarn.resourcemanager.address RM 的 applications manager (ASM) 端口
YARN ResourceManager 8030 yarn.resourcemanager.scheduler.address scheduler 组件的 IPC 端口
YARN ResourceManager 8031 yarn.resourcemanager.resource-tracker.address IPC
YARN ResourceManager 8033 yarn.resourcemanager.admin.address IPC
YARN ResourceManager 8088 yarn.resourcemanager.webapp.address http 服务端口
YARN NodeManager 8040 yarn.nodemanager.localizer.address localizer IPC
YARN NodeManager 8042 yarn.nodemanager.webapp.address http 服务端口
YARN NodeManager 8041 yarn.nodemanager.address NM 中 container manager 的端口
YARN JobHistory Server 10020 mapreduce.jobhistory.address IPC
YARN JobHistory Server 19888 mapreduce.jobhistory.webapp.address http 服务端口

# Hbase

组件 节点 端口 配置 用途说明
HBase Master 60000 hbase.master.port IPC
HBase Master 60010 hbase.master.info.port http 服务端口
HBase RegionServer 60020 hbase.regionserver.port IPC
HBase RegionServer 60030 hbase.regionserver.info.port http 服务端口
HBase HQuorumPeer 2181 hbase.zookeeper.property.clientPort HBase-managed ZK mode,使用独立的 ZooKeeper 集群则不会启用该端口。
HBase HQuorumPeer 2888 hbase.zookeeper.peerport HBase-managed ZK mode,使用独立的 ZooKeeper 集群则不会启用该端口。
HBase HQuorumPeer 3888 hbase.zookeeper.leaderport HBase-managed ZK mode,使用独立的 ZooKeeper 集群则不会启用该端口。

# Hive

组件 节点 端口 配置 用途说明
Hive Metastore 9083 /etc/default/hive-metastore 中 export PORT= <port> 来更新默认端口
Hive HiveServer 10000 /etc/hive/conf/hive-env.sh 中 export HIVE_SERVER2_THRIFT_PORT= <port> 来更新默认端口

# Zookeeper

组件 节点 端口 配置 用途说明
ZooKeeper Server 2181 /etc/zookeeper/conf/zoo.cfg 中 clientPort= <port> 对客户端提供服务的端口
ZooKeeper Server 2888 /etc/zookeeper/conf/zoo.cfg 中 server.x=[hostname]:nnnnn [:nnnnn],标蓝部分 follower 用来连接到 leader,只在 leader 上监听该端口。
ZooKeeper Server 3888 /etc/zookeeper/conf/zoo.cfg 中 server.x=[hostname]:nnnnn [:nnnnn],标蓝部分 用于 leader 选举的。只在 electionAlg 是 1,2 或 3 (默认) 时需要。
编辑 (opens new window)
上次更新: 2023/12/06, 01:31:48
Hadoop
HDFS

← Hadoop HDFS→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式