目录
- 一:资源要求与准备
- 二:安装JDK
- 三:安装Hadoop
- 下载
- 集群规划
- 安装
- 集群配置
- 配置core-site.xml文件
- 配置hdfs-site.xml
- 配置yarn-site.xml
- 配置mapred-site.xml
- 配置workers(旧版本是slaves)
- 分发配置
- 启动集群
- 首次启动初始化NameNode
- 启动HDFS
- 启动Yarn
- 查看每个节点状态
- 上传文件测试集群
- 总结
一:资源要求与准备
- Centos7 机器3台:单机至少2g内存
- 配置机器之间免密登录
参考链接:服务器之间ssh免密登录配置
- 必须确保三台服务器两两之间能ssh免密登录
- 验证:进入服务器后执行ssh命令登录三台服务器
- 我这里将三台服务器的hostname分别设置为hadoop102、hadoop103、hadoop104并且配置了hosts文件
#免密登录验证
ssh hadoop102
ssh hadoop103
ssh hadoop104
二:安装JDK
- 新建文件目录
sudo mkdir -p /opt/module
注意:当前用户如果不是root用户,必须将module文件夹所属的组、主权限修改为当前操作集群的用户和用户组
- 解压文件
jdk下载链接:https://pan.baidu.com/s/1XwKheQa9WI3k3XgS-uu8lg 密码:n3da
tar -zxvf jdk-8u212-linux-x64.tar.gz
- 配置环境变量
新建环境文件
sudo vim /etc/profile.d/my_env.sh
添加以下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
使环境变量生效
source /etc/profile
或者重启shell窗口
- 验证
java -version
如果看到以下内容,则安装jdk成功
java version "1.8.0_212"
三:安装Hadoop
下载
- Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
- 网盘提取地址:链接:https://pan.baidu.com/s/1jwxCnP8_j8QB9ru_26sNlA 密码:xphx
集群规划
组件 | 机器hadoop102 | 机器hadoop103 | 机器hadoop104 |
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | NodeManager ResourceManager | NodeManager |
安装
先在Hadoop102机器安装,配置完成后再分发其他机器
- 登录hadoop102机器,上传、解压安装文件到/opt/module下面
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
- 查看是否解压成功
ls /opt/module/
- 配置环境变量
- 打开前面配置的环境变量文件
[lizzy@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
- 加上Hadoop环境变量
#jdk环境变量配置
JAVA_HOME=/opt/module/jdk1.8.0_212
#hadoop环境变量配置
HADOOP_HOME=/opt/module/hadoop-3.1.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH JAVA_HOME HADOOP_HOME
- 重启shell窗口或者执行
source /etc/profile
集群配置
配置core-site.xml文件
cd $HADOOP_HOME/etc/hadoop
vim core-site.xml
配置文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9820</value>
</property>
<!-- 指定hadoop数据的存储目录
官方配置文件中的配置项是hadoop.tmp.dir ,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来具体指定namenode 和 datanode存储数据的目录
-->
<property>
<name>hadoop.data.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
</configuration>
配置hdfs-site.xml
cd $HADOOP_HOME/etc/hadoop
vim hdfs-site.xml
配置文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode数据的存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.data.dir}/name</value>
</property>
<!-- 指定Datanode数据的存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.data.dir}/data</value>
</property>
<!-- 指定SecondaryNameNode数据的存储目录 -->
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file://${hadoop.data.dir}/namesecondary</value>
</property>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
配置yarn-site.xml
cd $HADOOP_HOME/etc/hadoop
vim yarn-site.xml
配置文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
配置mapred-site.xml
cd $HADOOP_HOME/etc/hadoop
vim mapred-site.xml
配置文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!—指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置workers(旧版本是slaves)
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
在该文件增加如下内容
就是你的集群机器hostname,注意不要有空格和空行
hadoop102
hadoop103
hadoop104
分发配置
lizzy是我的用户名,这里根据自己实际是使用root还是其他用户来代替,如果不是root注意权限问题
- 分发安装目录到机器hadoop103
sudo rsync -r /opt/module/hadoop-3.1.3 lizzy:hadoop103:/opt/module/
- 分发安装目录到机器hadoop104
sudo rsync -r /opt/module/hadoop-3.1.3 lizzy:hadoop104:/opt/module/
- 进入hadoop103、hadoop104 检查是否分发成功
ssh hadoop103 ls /opt/module
ssh hadoop104 ls /opt/module
启动集群
首次启动初始化NameNode
我们的NameNode配置在hadoop102节点,ssh hadoop102 进入102节点
hdfs namenode -format
没有任何报错,中途没有询问输入任何的yes / no就是成功
启动HDFS
在hadoop102机器启动
start-dfs.sh
启动Yarn
按照我们的集群规划,yarn部署在hadoop103,ssh hadoop103 到103节点启动
start-yarn.sh
查看每个节点状态
命令可以查看启动的进程,在每个节点执行jps查看进程启动状态,看下启动的服务是否符合规划
ssh hadoop102 jps
ssh hadoop103 jps
ssh hadoop104 jps
组件 | 机器hadoop102 | 机器hadoop103 | 机器hadoop104 |
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | NodeManager ResourceManager | NodeManager |
上传文件测试集群
执行命令上传LICENSE.txt文件
hdfs dfs -put /opt/module/hadoop-3.1.3/LICENSE.txt /
打开namenode的web页面查看,文件上传集群成功:
总结
这里面很多操作可以优化,比如:
- rsync分发避免重复操作可以写成分发脚本,集群启动也可以写成启动脚本
- 可以启动更多服务,配置日志服务器,配置日志聚集上传
- 具体上传、下载、创建文件夹等基本命令操作
- 中间操作如果不能成功,可以查看hadoop下的日志文件,一般是权限问题居多
- hadoop2.x和hadoop3.x端口不完全一样,这个需要注意,本文是hadoop-3.1.3