Hadoop介绍

Hadoop 是一个开源的分布式计算和存储框架,由 Apache 基金会开发和维护。

Hadoop 为庞大的计算机集群提供可靠的、可伸缩的应用层计算和存储支持,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集,并且支持在单台计算机到几千台计算机之间进行扩展。

Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce。

Hadoop 历史

2003 年和 2004 年,Google 公司先后发表了两篇著名的论文 GFS 和 MapReduce。

这两篇论文和 2006 年发表的 BigTable 成为了现在著名的"Google 三大论文"。

Doug Cutting 在受到了这些理论的影响后开始了 Hadoop 的开发。

Hadoop 包含了两大核心组件。在 Google 的论文中,GFS 是一个在庞大的计算机集群中运行的分布式文件系统,在 Hadoop 中 HDFS 实现了它的功能。MapReduce 是一个分布式计算的方式,Hadoop 用同名称的 MapReduce 框架实现了它的功能。我们会在之后的 MapReduce 章节中详细介绍它。 从 2008 年开始,Hadoop 作为 Apache 顶级项目存在。它与它的众多子项目广泛应用于包括 Yahoo、阿里巴巴、腾讯等大型网络服务企业,并被 IBM、Intel、Microsoft 等平台公司列为支持对象。

Hadoop 的作用

Hadoop 的作用非常简单,就是在多计算机集群环境中营造一个统一而稳定的存储和计算环境,并能为其他分布式应用服务提供平台支持。

也就是说, Hadoop 在某种程度上将多台计算机组织成了一台计算机(做同一件事),那么 HDFS 就相当于这台计算机的硬盘,而 MapReduce 就是这台计算机的 CPU 控制器。

2.0 Hadoop 运行环境

 

由于 Hadoop 是为集群设计的软件,所以我们在学习它的使用时难免会遇到在多台计算机上配置 Hadoop 的情况,这对于学习者来说会制造诸多障碍,主要有两个:

  • 昂贵的计算机集群。多计算机构成的集群环境需要昂贵的硬件.
  • 难以部署和维护。在众多计算机上部署相同的软件环境是一个大量的工作,而且非常不灵活,难以在环境更改后重新部署。

为了解决这些问题,我们有一个非常成熟的方式 Docker

Docker 是一个容器管理系统,它可以向虚拟机一样运行多个"虚拟机"(容器),并构成一个集群。因为虚拟机会完整的虚拟出一个计算机来,所以会消耗大量的硬件资源且效率低下,而 Docker 仅提供一个独立的、可复制的运行环境,实际上容器中所有进程依然在主机上的内核中被执行,因此它的效率几乎和主机上的进程一样(接近100%)。

本教程将会以 Docker 为底层环境来描述 Hadoop 的使用,如果你不会使用 Docker 并且不了解更好的方式,请学习 Docker 教程

Windows 上 Docker 安装

注:Windows 用户建议使用虚拟机方案安装 Docker。

Docker 部署

进入 Docker 命令行之后,拉取一个 Linux 镜像作为 Hadoop 运行的环境,这里推荐使用 CentOS 镜像(Debian 和其它镜像暂时会出现一些问题)。

docker pull centos:8

然后通过 docker images 命令可以查看到当前本地的镜像:

现在,我们创建一个容器:

docker run -d centos:8 /usr/sbin/init

通过 docker ps 可以查看运行中的容器:

我们可以令容器打印出 Hello World:

到这里说明 Docker 已经安装并部署成功。

创建容器

Hadoop 支持在单个设备上运行,主要有两种模式:单机模式和伪集群模式。

本章讲述 Hadoop 的安装与单机模式。

配置 Java 与 SSH 环境

现在创建一个容器,名为 java_ssh_proto,用于配置一个包含 Java 和 SSH 的环境:

docker run -d --name=java_ssh_proto --privileged centos:8 /usr/sbin/init

然后进入容器:

docker exec -it java_ssh_proto bash

配置镜像:

sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-Stream-AppStream.repo \
         /etc/yum.repos.d/CentOS-Stream-BaseOS.repo \
         /etc/yum.repos.d/CentOS-Stream-Extras.repo \
         /etc/yum.repos.d/CentOS-Stream-PowerTools.repo

安装 OpenJDK 8 和 SSH 服务:

yum install -y java-1.8.0-openjdk-devel openssh-clients openssh-server

然后启用 SSH 服务:

systemctl enable sshd && systemctl start sshd

如果是 ubuntu 系统,使用以下命令启动 SSH 服务:

systemctl enable ssh && systemctl start ssh

到这里为止,如果没有出现任何故障,一个包含 Java 运行环境和 SSH 环境的原型容器就被创建好了。这是一个非常关键的容器,建议大家在这里先在容器中用 exit 命令退出容器,然后运行以下下两条命令停止容器,并保存为一个名为 java_ssh 的镜像:

docker stop java_ssh_proto
docker commit java_ssh_proto java_ssh

Hadoop 安装

下载 Hadoop

Hadoop 官网地址:Apache Hadoop

Hadoop 发行版本下载:Apache Hadoop

在目前的测试中,3.1.x 与 3.2.x 版本的兼容性较佳,本教程使用 3.1.4 版本作为案例。

Hadoop 3.1.4 镜像地址,下载好 tar.gz 压缩包文件备用。

创建 Hadoop 单机容器

现在以之前保存的 java_ssh 镜像创建容器 hadoop_single:

docker run -d --name=hadoop_single --privileged java_ssh /usr/sbin/init

将下载好的 hadoop 压缩包拷贝到容器中的 /root 目录下:

docker cp <你存放hadoop压缩包的路径> hadoop_single:/root/

进入容器:

docker exec -it hadoop_single bash

进入 /root 目录:

cd /root

这里应该存放着刚刚拷贝过来的 hadoop-x.x.x.tar.gz 文件,现在解压它:

tar -zxf hadoop-3.1.4.tar.gz

解压后将得到一个文件夹 hadoop-3.1.4,现在把它拷贝到一个常用的地方:

mv hadoop-3.1.4 /usr/local/hadoop

然后配置环境变量:

echo "export HADOOP_HOME=/usr/local/hadoop" >> /etc/bashrc
echo "export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin" >> /etc/bashrc 

然后退出 docker 容器并重新进入。

这时,echo $HADOOP_HOME 的结果应该是 /usr/local/hadoop

echo "export JAVA_HOME=/usr" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
echo "export HADOOP_HOME=/usr/local/hadoop" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

这两步配置了 hadoop 内置的环境变量,然后执行以下命令判断是否成功:

hadoop version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值