系列文章目录
文章目录
简单概述
本篇文章主要介绍的是Hadoop权威指南这本书的前期集群的安装, 只有实现对集群的安装才能够在本地实现对后续内容的实验.
前期准备
需要准备好的东西有: jdk1.8以及hadoop的安装包,这里同时给一个百度云链接, 防止csdn的资源当中无法下载.
准备好三台虚拟机, 同时需要实现三台虚拟机的互通, 配置好ssh以及基本的网络配置, 以后有时间写文章补充.
配置步骤
注意 :
- 这里三台虚拟机的名称为hadoop01, hadoop02, hadoop03, 以下按此进行配置.
- 文件的默认存放位置为/opt/apps, 下面位置都以此为基础
完成hadoop01的配置
配置jdk
- 在/opt/apps下进行解压操作
- 进行全局变量的配置
vi /etc/profile
- 在文件最后的部分添加
# 这里需要注意找到自己的jdk安装地址
export JAVA_HOME=jdk地址
export PATH=$PATH:$JAVA_HOME/bin
- 更新全局变量
source /etc/profile
- 查看是否可用, 如果出现java的版本, 那么说明配置没有问题; 如果有问题, 那么jdk的安装地址检查一下
java -version
配置Hadoop
1.在/opt/apps下进行解压操作
2. 配置hadoop的依赖
# 进入/opt/apps/hadoop-3.1.1/etc/hadoop/ 配置文件 hadoop-env.sh
cd /opt/apps/hadoop-3.1.1/etc/hadoop/
# 编辑 hadoop-env.sh 添加 java的依赖信息
vi hadoop-env.sh
以下部分是文件中需要添加的内容
export JAVA_HOME=jdk地址
- 扩展配置依赖修改
# 进入文件夹/opt/apps/hadoop-3.1.1/etc/hadoop/
cd /opt/apps/hadoop-3.1.1/etc/hadoop/
# 编辑文件 hdfs-site.xml
vi hdfs-site.xml
注意文件<configuration></configuration>
标签, 在这个标签内写如下内容
<!-- 将下面配置信息copy到文件中的<configuration></configuration>标签中-->
<!-- 集群的namenode的位置 datanode能通过这个地址注册-->
<property>
<name>dfs.namenode.rpc-address</name>
<value>hadoop01:8020</value>
</property>
<!-- namenode存储元数据的位置 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hdpdata/name</value>
</property>
<!-- datanode存储数据的位置 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hdpdata/data</value>
</property>
<!-- secondary namenode机器的位置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:50090</value>
</property>
在当前文件下修改另一个文件workers
vi workers
在文件中删除内容后添加机器的域名
# 这里的域名和文章注意的内容匹配, 如果改名了, 那么就填写改名的域名
hadoop01
hadoop02
hadoop03
进入/opt/apps/hadoop-3.1.1/sbin
文件夹下修改start-dfs.sh
与stop-dfs.sh
vi start-dfs.sh
在其第二行空行出添加以下内容
# 这里由于我直接使用的是root用户, 所以写的是root用户, 如果是其他用户那么写其他用户
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
下一步就是修改stop-dfs.sh
内容和上面一样
vi stop-dfs.sh
在其第二行空行出添加以下内容
# 这里由于我直接使用的是root用户, 所以写的是root用户, 如果是其他用户那么写其他用户
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
- 全局环境变量配置, 同jdk一样
# 编辑/etc/profile
vi /etc/profile
#在文件内添加以下代码, 注意要添加到文件最后, 之前已经添加了Java的内容
export HADOOP_HOME=/opt/apps/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#保存退出, 更新全局变量
source /etc/profile
内容分发
完成了上面对hadoop01
的配置之后我们就可以将这个内容分发到hadoop02
, hadoop03
上面了.
首先返回到hadoop
文件夹的上一级目录也就是/opt/apps/
, 执行以下命令
for i in hadoop01 hadoop02:
do
# 这里的hadoop-3.1.1/是我的jdk文件名
scp -r hadoop-3.1.1/ $i:$PWD
done
等待分发完成后, 分发jdk文件
for i in hadoop01 hadoop02:
do
# 这里的jdk1.8/是我的jdk文件名
scp -r jdk1.8/ $i:$PWD
done
分发更新的全局变量文件, 全局文件分发后需要进行
for i in hadoop02 hadoop03;
do
scp /etc/profile $i:/etc/profile;
done
完成后对hadoop02
, hadoop03
, 进行一次source /etc/profile
, 并使用java -version
查看是否正确分发, 并查看到版本.
初始化操作
对hadoop01
执行初始化的操作
hadoop namenode -format
对hadoop01
开启namenode节点
hadoop-daemon.sh start namenode
对hadoop01
, hadoop02
, hadoop03
开启datanode节点
hadoop-daemon.sh start datanode
查看是否配置成功
利用jps
命令可以查看是否有datanode
与namenode
进程
在web端的话可以访问http:hadoop01:9870/
来查看是否构建成功集群, 通过Datanodes
可以查看有几个节点.
错误参考
集群构建后只有一个节点
查看三台机器当中的元数据文件夹中的集群ID是否一致, 这里我们查看/opt/hdpdata/data/current/VERSION
文件中的clusterID
是否一致, 如果不一致, 将其修改成一致.
脚本
快速查看集群的节点状态的脚本
#!/bin/bash
# `cat /opt/apps/hadoop-3.1.1/etc/hadoop/workers`
for host in hadoop01 hadoop02 hadoop03
do
echo "################$host进程状态###############"
ssh $host "source /etc/profile;jps;exit"
done
快速启动集群脚本
#!/bin/bash
status=$1
if [ $status == start ]
then
ssh hadoop01 "source /etc/profile;start-all.sh;mapred --daemon start historyserver;exit"
elif [ $status == stop ]
then
ssh hadoop01 "source /etc/profile;stop-all.sh;mapred --daemon stop historyserver;exit"
else
echo Command not found
fi