Hadoop安装

226 阅读2分钟

下载

首先点击这里**,进入 Hadoop 官网下载页面。

image.png 选择 3.2.2 (stable) 稳定版本进行下载,然后点击 binary 地址进行下载

image.png 选中官方推荐的地址即可下载,其他地址也可用(建议采用迅雷等下载工具下载,速度比较会快很多,上传至 UBUNTU 系统)

或者在 ubuntu 中使用 wget 命令进行下载

wget https://apache.website-solution.net/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz 

解压

使用下面的命令解压 jdk 压缩包,我们统一放到路径 /opt 下

$ tar -xvzf hadoop-3.2.2.tar.gz -C /opt
$ ls /opt/hadoop-3.2.2
LICENSE.txt  NOTICE.txt  README.txt  bin  etc  include  lib  libexec  sbin  share

环境变量

使用命令 nano /etc/profile 编辑系统环境变量文件,将下面的文本添加进环境变量

# HADOOP export HADOOP_HOME=/opt/hadoop-3.2.2 export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH 

运行命令 source /etc/profile,更新系统变量

配置

hadoop 的部署分为 3 种模式,分别为单机模式 伪分布模式 (单节点)  全分布模式三种

无论部署哪种模式,我们都需要先配置环境变量,我们选择配置系统变量,无论是否是当前路径都可以使用

首先打开 /opt/hadoop-3.2.2/etc/hadoop 这个目录,分别编辑下面几个文件,根据个人需求更改参数:

core-site.xml

<configuration>
  # 配置hdfs的namenode的地址,使用的是hdfs协议
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
  </property>
  # 配置hadoop运行时产生数据的存储目录,不是临时目录
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/tmp</value>
  </property>
</configuration>

master 在 hosts 文件中做了映射,可以替换成本机 IP

hdfs-site.xml

<configuration>
  # 配置在hdfs中,一份文件存几份,默认是3份,一台机器只能存一份,小于datanode数量
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>
  # 是否打开权限检查系统
  <property>
    <name>dfs.permissions</name>
    <value>false</value>
  </property>
  # 命名空间和事务在本地文件系统永久存储的路径
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/opt/data/namenode</value>
  </property>
  # DataNode在本地文件系统中存放块的路径
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/opt/data/datanode</value>
  </property>
</configuration>

如果你只有 3 个 datanode,但是你却指定副本数为 4,是不会生效的,因为每个 datanode 上只能存放一个副本。

hadoop 有时候并不能自己创建 namenode 和 datanode 文件夹,可以运行下面的命令手动创建这 2 个文件夹

mkdir -p /opt/data/namenode
mkdir -p /opt/data/datanode
mkdir -p /opt/tmp

yarn-site.xml

<configuration>
  # 指定yarn的resourcemanager的地址(该地址是resourcemanager的主机地址,即主机名或该主机的ip地址)
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  # 指定mapreduce执行shuffle时获取数据的方式
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

mapred-site.xml

<configuration>
  # 指定mapreduce运行在yarn上
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.2.2</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.2.2</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop-3.2.2</value>
  </property>
</configuration>

hadoop-env.sh

在任意地方添加 JAVA_HOME

export JAVA_HOME=/opt/jdk1.8.0_291

workers

master
slave1
slave2

配置的是所有的从节点,用 IP 也可以,所有配置文件修改完毕后,进入 hadoop 初始化步骤

同步环境到其他节点

到此一个节点上的配置就已经全部配置完毕了

接下来,我们可以使用下面的命令,将 JDK 和 Hadoop 传输到其他节点

scp /etc/profile slave1:/etc/
scp /etc/profile slave2:/etc/
scp -r /opt/* slave1:/opt/
scp -r /opt/* slave2:/opt/

Hadoop 初始化

允许 root 账户运行

使用下面的命令进入 hadoop 脚本路径

cd $HADOOP_HOME/sbin/

使用 vi 编辑 start-dfs.sh 和 stop-dfs.sh 顶部添加

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

使用 vi 编辑 start-yarn.sh 和 stop-yarn.sh 顶部添加

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

HDFS 初始化

集群模式下,需要对每一台机器进行初始化

接下来到各个节点运行下面的命令

hdfs namenode -format

格式化完毕后,如图所示,则表示初始化成功

image.png

如果初始化失败,需要用下面的命令手动清空 namenode 和 datanode 文件夹,调整配置后,重新初始化

rm -rf /opt/data/namenode/*
rm -rf /opt/data/datanode/*

启动 Hadoop

Namenode

hdfs --daemon start namenode
hdfs --daemon stop namenode
hdfs --daemon restart namenode

Datanode

hdfs --daemon start datanode
hdfs --daemon stop datanode
hdfs --daemon restart datanode

你可以使用上面的命令挨个启动 namenode 和 datanode,如果已配置好 workers 和 ssh 免密登录,你可以使用下面的命令调用脚本直接启动所有 hdfs 进程

start-dfs.sh

ResourceManager

yarn --daemon start resourcemanager
yarn --daemon stop resourcemanager
yarn --daemon restart resourcemanager

NodeManager

yarn --daemon start nodemanager
yarn --daemon stop nodemanager
yarn --daemon restart nodemanager

你可以使用上面的命令挨个启动 resourcemanager 和 nodemanager,如果已配置好 workers 和 ssh 免密登录,你可以使用下面的命令调用脚本直接启动所有 yarn 进程

start-yarn.sh

启动成功

启动完毕后可以使用 jps 命令查看启动的 hadoop 进程 master 节点

$ jps
28656 NodeManager
28388 ResourceManager
27284 SecondaryNameNode
26919 NameNode
27081 DataNode
28975 Jps

slave 节点

$ jps
7666 DataNode
7784 NodeManager
7947 Jps

可以访问 http://localhost:9870** ,查看 HDFS 运行情况

image.png

image.png

可以访问 http://localhost:8088** 查看所有 Yarn 任务的运行情况

image.png

至此整个 hadoop 就搭建好了

案例测试

PI 值计算

我们可以使用一个简单的例子来测试一下 hadoop 是否能够正常运行

我们从 hadoop 安装文件夹,启动一个终端,使用下面的命令,计算 pi 值

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 10 

如图所示,我们计算量比较少导致不够精确,但是已经可以成功运算出 pi 值了

image.png

附件

相关链接

原文链接:liufengyu.cn/posts/docke…