本节内容主要讲解如何在腾讯云服务器中配置Hadoop开发环境。首先考虑到成本的原因,每个人配置一台云服务器的成本不是很高,但是要模拟分布式开发环境至少需要三台机器。那么开发的成本就会比较高,在学习阶段可以采用docker
创建三个容器,用于配置开发环境,可以极大缩减成本。另外如果是在笔记本电脑中用虚拟机模拟学习环境,至少需要同时启动三台虚拟机,这也是需要极大的内存才能带动。
在Ubuntu18.04上安装docker
在Ubuntu上安装docker非常的直接,启动docker源、导入GPG key,并且安装软件包。首先,更新软件包索引,并且安装必要的依赖软件,并添加一个HTTPS软件源。
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
使用下面的curl
导入源仓库的GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将docker的 APT软件源添加进系统:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装最新版的docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
安装指定版本
sudo apt update
apt list -a docker-ce
可以用的docker版本会显示出来
docker-ce/bionic,now 5:24.0.2-1~ubuntu.18.04~bionic amd64 [installed]
docker-ce/bionic 5:24.0.1-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:24.0.0-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.6-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.5-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.4-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.3-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.2-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.1-1~ubuntu.18.04~bionic amd64
docker-ce/bionic 5:23.0.0-1~ubuntu.18.04~bionic amd64
例如现在想要安装5:24.0.1-1~ubuntu.18.04~bionic amd64
该版本的docker,可以输入以下命令。
sudo apt-get install docker-ce=5:24.0.1-1~ubuntu.18.04~bionic docker-ce-cli=5:24.0.1-1~ubuntu.18.04~bionic containerd.io
验证版本
docker --version
一旦docker安装成功,其服务则会自动启动。
sudo systemctl status docker
Docker version 24.0.2, build cb74dfc
root@VM-12-9-ubuntu:/# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2024-01-27 01:05:53 CST; 10h ago
Docs: https://docs.docker.com
Main PID: 7017 (dockerd)
Tasks: 10
CGroup: /system.slice/docker.service
└─7017 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
添加腾讯云的镜像源加速镜像下载
安装好了docker之后可以使用docker pull
命令拉取镜像。如果没有配置镜像加速源的话,通常下载的速度会比较慢。
打开/etc/docker/daemon.json
配置文件
vim /etc/docker/daemon.json
往配置文件中写入以下内容
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
接下来重新启动docker服务
sudo systemctl restart docker
最后,拉取Ubuntu镜像
docker pull ubuntu
创建容器
创建容器时,我们都希望可以指定主机名,否则会在创建容器时随机一个字符串作为主机名。这里一共要创建三个容器。
# 绑定容器与宿主机端口号为9870
docker run -p 9870:9870 -itd --name master --hostname master ubuntu
docker run -itd --name slave1 --hostname slave1 ubuntu
docker run -itd --name slave2 --hostname slave2 ubuntu
上述命令的意思是基于ubuntu系统创建一个容器名和主机名都为master的容器。
启动与关闭容器
docker start master
docker stop master
进入容器
docker exec -it master /bin/bash
docker exec -it --privileged master /bin/bash # 特权模式进入
为容器设置密码
为了后面方便使用ssh,为容器设置密码
passwd
紧接着修改配置文件
vim /etc/ssh/sshd_config
添加上
PermitRootLogin yes
如果PermitRootLogin prohibit-password
未注释的话,需要将其注释
最后从重启ssh服务
service ssh restart
安装必要软件
首先更新软件索引
apt-get update
1、安装net-toos
apt install net-tools
2、安装vim
apt-get install vim
3、安装ping
apt install iputils-ping
4、安装ssh
apt-get install openssh-server
5、安装ufw
apt-get install ufw
sudo ufw status # 查看防火墙的状态
sudo systemctl stop ufw #关闭防火墙
sudo systemctl disable ufw # 永久关闭防火墙
6、安装sudo
apt-get install sudo
配置Hadoop完全分布式环境
平台软件说明
平台软件 | 说明 |
---|---|
操作系统 | Ubuntu 18.04 |
容器docker | master:172.17.0.2 slave1:172.17.0.3 slave2:172.17.0.4 |
软件包上传路径 | /opt/software |
软件包安装路径 | /opt/module |
jdk | jdk-8u212-linux-x64.tar.gz |
hadoop | hadoop-3.3.1.tar.gz |
用户 | root |
守护进程的布局
NameNode | DataNode | secondaryNameNode | |
---|---|---|---|
maser | √ | √ | |
slave1 | √ | √ | |
slave2 | √ |
集群搭建的准备工作
1、安装jdk
2、三台机器的环境都必须关闭防火墙
3、确保/etc/hosts文件中的IP地址和主机名的映射
4、配置三台机器的免密登录
5、保证jdk环境和Hadoop环境的配置
完全分布式集群的介绍
在真实的企业环境中,服务器集群会使用到多台机器,共同配合,来构建一个完全分布式集群的系统。在这样的分布式文件系统中。HDFS的守护进程也会分布在不同的机器中。例如:
-
namenode守护进程,尽可能单独部署在一台硬件较好的设备上
-
其他的每台机器上都会部署一个DataNode守护进程,一般的硬件环境即可。
-
SecondaryNameNode守护进程最好不要和NameNode守护进程放在一起。
配置jdk
在配置jdk和Hadoop的过程中,只需要单独配置一台机器即可,因为在后面可以通过
scp
命令将配置内容分发到其他机器。
首先注意一下,使用scp
命令从宿主机传输文件进入容器时,需要切换回root账户。
接下来在master容器中的/opt
目录下创建两个文件夹:software
和module
。
使用以下命令进行传输jdk
scp -r jdk-8u212-linux-x64.tar.gz root@master:/opt/software
紧接着进入master容器解压jdk至module文件夹
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
配置环境变量
切换目录至profile.d
并新建配置文件my_env.sh
cd /etc/profile.d/
vim my_env.sh
在my_env.sh
中配置Java环境变量
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
激活环境变量
source /etc/profile
查看Java版本
java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
配置Hadoop
使用以下命令传输hadoop进入容器
scp -r jdk-8u212-linux-x64.tar.gz root@master:/opt/software
紧接着,解压压缩包至/opt/module
下
tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module/
配置环境变量
切换目录至profile.d
并新建配置文件my_env.sh
、hadoop_env.sh
、workers
export HADOOP_HOME=/opt/module/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改配置文件
通过以下命令切换到hadoop的配置目录,设置core-site.xml
、hdfs-site.xml
core-site.xml
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
<configuration>
<!-- 设置namenode节点 -->
<!-- 注意:Hadoop1.x默认端口9000 hadoop2.x默认端口8020 hadoop3.x默认端口 9820 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9820</value>
</property>
<!--hdfs的基础路径,被其他路径所依赖的一个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.1/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- 块的副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端口号 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
<!-- namenode守护进程的http地址:主机名和端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>slave1:9870</value>
</property>
<!-- 允许外网的任意地址访问 -->
<property>
<name>dfs.namenode.http-bind-host</name>
<value>0.0.0.0</value>
</property>
</configuration>
配置hadoop-env.sh
配置Hadoop在运行时的环境
export JAVA_HOME=/opt/module/jdk1.8.0_212
# 设置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
配置workers
作用是设置三个容器都要规划datanode进程,相当于datanode会在哪些节点进行工作。
master
slave1
slave2
配置IP地址与主机名的映射关系
在/etc/hosts
文件下补充以下内容,目的是为了方面后续配置ssh免密登录。另外需要提醒一下,三台机器均需要做好映射。
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave4
配置免密登录
做免密登录时需要在每一个节点生成自己的公钥和私钥,并将公钥发送给自己和另外两台机器。参考如下命令操作:
root@master:~# ssh-keygen -t rsa
root@master:~# ssh-copy-id master
root@master:~# ssh-copy-id slave1
root@master:~# ssh-copy-id slave2
文件分发
接下来需要做的事情就是将所有的配置文件从master分发到slave1和slave2。但是在slave1和salve2中并未创建module和software文件夹,因此需要先在另外两个容器中创建文件夹
mkdir /opt/module
midir /opt/software
接下来进入master容器,分发文件
cd /opt/module
scp -r jdk1.8.0_212/ hadoop-3.3.1/ slave2:$PWD
scp -r jdk1.8.0_212/ hadoop-3.3.1/ slave1:$PWD
scp -r my_env.sh slave2:$PWD
scp -r my_env.sh slave1:$PWD
最后激活slave1和slave2的环境变量
source /etc/profile
格式化并启动集群
hdfs namenode -format
start-dfs.sh
将集群启动之后需要测试是否与部署的效果一样,可以使用以下命令,查看看各个容器的Java进程
root@master:~# jps
1520 DataNode
1412 NameNode
1753 Jps
root@slave1:~# jps
5480 Jps
5320 DataNode
root@slave2:~# jps
4998 DataNode
5063 Jps
添加防火墙规则
打开腾讯云服务器的后台,添加端口9870允许任意网络访问,接下来打开浏览器,输入ip:9870

从上图的datanode可以看到与我们配置的内容一致。一共三个datanode,分别在slave1、master、slave2中。
至此,分布式集群环境搭建完毕!
原文始发于微信公众号(小志Codings):Hadoop分布式集群环境搭建
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/236537.html