下载
首先点击这里**,进入 Hadoop 官网下载页面。
选择 3.2.2 (stable) 稳定版本进行下载,然后点击 binary 地址进行下载
选中官方推荐的地址即可下载,其他地址也可用(建议采用迅雷等下载工具下载,速度比较会快很多,上传至 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
格式化完毕后,如图所示,则表示初始化成功
如果初始化失败,需要用下面的命令手动清空 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 运行情况
可以访问 http://localhost:8088** 查看所有 Yarn 任务的运行情况
至此整个 hadoop 就搭建好了
案例测试
PI 值计算
我们可以使用一个简单的例子来测试一下 hadoop 是否能够正常运行
我们从 hadoop 安装文件夹,启动一个终端,使用下面的命令,计算 pi 值
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 10 10
如图所示,我们计算量比较少导致不够精确,但是已经可以成功运算出 pi 值了
附件
相关链接