<commit_before>---
layout:      post
title:       "Hadoop 集群在虚拟机上进行简易搭建"
categories:  [运维, Linux, 大数据, Hadoop]
description: "Hadoop 集群在虚拟机上进行简易搭建"
keywords:    运维, Linux, 大数据, Hadoop
---

# Hadoop 集群在虚拟机上进行简易搭建

## 主机相关

### 服务器说明

1. `hadoop01`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop01 hadoop01.bonc
    + IP 地址： 192.168.0.103
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

1. `hadoop02`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop02 hadoop02.bonc
    + IP 地址： 192.168.0.104
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

1. `hadoop03`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop03 hadoop03.bonc
    + IP 地址： 192.168.0.105
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

### 操作系统安装

__**此步骤省略。**__ 

__注：__ 安装操作系统的同时，设置主机名和时间同步

### 关闭防火墙和 selinux

```sh
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭 selinux
setenforce 0
# 永久关闭 selinux
# 将 /etc/selinux/config 文件中的 SELINUX=enforcing 修改为 SELINUX=disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
```

### 配置 Yum 源

```sh
# 在 /etc/fstab 中追加光驱的挂载信息
cat >> /etc/fstab << EOF
/dev/sr0 /mnt                                          auto    defaults        0 0
EOF

# 使挂载信息生效
mount -a

# 增加 yum 源配置文件
cat > /etc/yum.repos.d/rhel7source.repo << EOF
[rhel7-source]
name=rhel7-source
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///mnt/RPM-GPG-KEY-redhat-release
EOF

# 刷新 yum 源
yum makecache

# 安装 screen
yum install screen -y
```

### 编辑 `/etc/hosts`

```
cat >> /etc/hosts << EOF
192.168.0.103   hadoop01 hadoop01.bonc
192.168.0.104   hadoop02 hadoop02.bonc
192.168.0.105   hadoop03 hadoop03.bonc
EOF
```

### 准备数据目录

```sh
# 创建数据目录
mkdir /data

# 创建 PV
pvcreate /dev/sdb

# 创建 VG
vgcreate hadoop_data /dev/sdb

# 创建 LV
lvcreate -n data -L 99G hadoop_data

# 格式化逻辑卷
mkfs.xfs /dev/hadoop_data/data

# 添加新的挂载信息
cat >> /etc/fstab << EOF
/dev/mapper/hadoop_data-data /data                     xfs     defaults        0 0
EOF

# 使挂载信息生效
mount -a
```

### 创建 hadoop 用户

```sh
# 创建 Hadoop 用户
useradd -m -s /usr/bin/bash hadoop
passwd hadoop

# 将数据目录划分给 hadoop
chown hadoop:hadoop /data
```

## Hadoop 相关 (以下操作通过 hadoop 用户操作)

### 组件版本选择(因为组件存在依存关系，安装顺序不建议修改)

1. jdk-8u251-linux-x64.tar.gz
1. hadoop-2.10.0.tar.gz
1. zookeeper-3.4.14.tar.gz
1. hbase-2.2.4-bin.tar.gz
1. db-derby-10.14.2.0-bin.tar.gz
1. apache-hive-2.3.7-bin.tar.gz
1. scala-2.12.11.tgz
1. spark-2.4.5-bin-hadoop2.7.tgz
1. flink-1.10.0-bin-scala_2.12.tgz

### Hadoop(hdfs、yarn) 安装

#### 配置免密登陆

```sh
# 创建 openssl 密钥
ssh-keygen

# 分别拷贝密钥到三台主机
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop01.bonc
ssh-copy-id hadoop02.bonc
ssh-copy-id hadoop03.bonc
```

#### 配置 JDK

```sh
# 创建安装包存放目录，并将安装包拷贝到目录中
mkdir /data/package

# 解压 JDK
mkdir /data/software
tar -zxvf /data/package/jdk-8u251-linux-x64.tar.gz -C /data/software/

# 为后期版本升级顺畅制作软连接
ln -s /data/software/jdk1.8.0_251 /data/software/jdk

# 配置环境变量
cat >> ~/.bashrc << EOF
# Add JDK environment variable
export JAVA_HOME=/data/software/jdk
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=\$JAVA_HOME/lib:\$JRE_HOME/lib
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
<commit_msg>修改主机名<commit_after>---
layout:      post
title:       "Hadoop 集群在虚拟机上进行简易搭建"
categories:  [运维, Linux, 大数据, Hadoop]
description: "Hadoop 集群在虚拟机上进行简易搭建"
keywords:    运维, Linux, 大数据, Hadoop
---

# Hadoop 集群在虚拟机上进行简易搭建

## 主机相关

### 服务器说明

1. `hadoop01`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop01 hadoop01.pve
    + IP 地址： 192.168.0.103
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

1. `hadoop02`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop02 hadoop02.pve
    + IP 地址： 192.168.0.104
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

1. `hadoop03`

    + 物理硬件： PVE 虚拟硬件
    + 操作系统： rhel-server-7.2-x86_64
    + 主机名： hadoop03 hadoop03.pve
    + IP 地址： 192.168.0.105
    + CPU： 2C
    + 内存： 4G
    + 硬盘： 64G + 100G(数据盘)

### 操作系统安装

__**此步骤省略。**__ 

__注：__ 安装操作系统的同时，设置主机名和时间同步

### 关闭防火墙和 selinux

```sh
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 临时关闭 selinux
setenforce 0
# 永久关闭 selinux
# 将 /etc/selinux/config 文件中的 SELINUX=enforcing 修改为 SELINUX=disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
```

### 配置 Yum 源

```sh
# 在 /etc/fstab 中追加光驱的挂载信息
cat >> /etc/fstab << EOF
/dev/sr0 /mnt                                          auto    defaults        0 0
EOF

# 使挂载信息生效
mount -a

# 增加 yum 源配置文件
cat > /etc/yum.repos.d/rhel7source.repo << EOF
[rhel7-source]
name=rhel7-source
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///mnt/RPM-GPG-KEY-redhat-release
EOF

# 刷新 yum 源
yum makecache

# 安装 screen
yum install screen -y
```

### 编辑 `/etc/hosts`

```
cat >> /etc/hosts << EOF
192.168.0.103   hadoop01 hadoop01.pve
192.168.0.104   hadoop02 hadoop02.pve
192.168.0.105   hadoop03 hadoop03.pve
EOF
```

### 准备数据目录

```sh
# 创建数据目录
mkdir /data

# 创建 PV
pvcreate /dev/sdb

# 创建 VG
vgcreate hadoop_data /dev/sdb

# 创建 LV
lvcreate -n data -L 99G hadoop_data

# 格式化逻辑卷
mkfs.xfs /dev/hadoop_data/data

# 添加新的挂载信息
cat >> /etc/fstab << EOF
/dev/mapper/hadoop_data-data /data                     xfs     defaults        0 0
EOF

# 使挂载信息生效
mount -a
```

### 创建 hadoop 用户

```sh
# 创建 Hadoop 用户
useradd -m -s /usr/bin/bash hadoop
passwd hadoop

# 将数据目录划分给 hadoop
chown hadoop:hadoop /data
```

## Hadoop 相关 (以下操作通过 hadoop 用户操作)

### 组件版本选择(因为组件存在依存关系，安装顺序不建议修改)

1. jdk-8u251-linux-x64.tar.gz
1. hadoop-2.10.0.tar.gz
1. zookeeper-3.4.14.tar.gz
1. hbase-2.2.4-bin.tar.gz
1. db-derby-10.14.2.0-bin.tar.gz
1. apache-hive-2.3.7-bin.tar.gz
1. scala-2.12.11.tgz
1. spark-2.4.5-bin-hadoop2.7.tgz
1. flink-1.10.0-bin-scala_2.12.tgz

### Hadoop(hdfs、yarn) 安装

#### 配置免密登陆

```sh
# 创建 openssl 密钥
ssh-keygen

# 分别拷贝密钥到三台主机
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop01.pve
ssh-copy-id hadoop02.pve
ssh-copy-id hadoop03.pve
```

#### 配置 JDK

```sh
# 创建安装包存放目录，并将安装包拷贝到目录中
mkdir /data/package

# 解压 JDK
mkdir /data/software
tar -zxvf /data/package/jdk-8u251-linux-x64.tar.gz -C /data/software/

# 为后期版本升级顺畅制作软连接
ln -s /data/software/jdk1.8.0_251 /data/software/jdk

# 配置环境变量
cat >> ~/.bashrc << EOF
# Add JDK environment variable
export JAVA_HOME=/data/software/jdk
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=\$JAVA_HOME/lib:\$JRE_HOME/lib
export PATH=\$JAVA_HOME/bin:\$PATH
EOF

{'fraction_non_alphanumeric': 0.14783821478382148, 'fraction_numerical': 0.06849527351619401, 'mean_word_length': 2.758881770529994, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 14, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5881521', 'n_tokens_mistral': 3843, 'n_tokens_neox': 3784, 'n_words': 624}