参考https://blog.csdn.net/qq_43605654/article/details/90746563
参考https://blog.csdn.net/weixin_50198333/article/details/108768630
三台机器配置环境
前期准备:
- JDK环境,修改主机名称,配置网络
- 三个ssh相互之间免密码登陆的虚拟机node1,node2,node3.
- 修改/etc/hosts文件
安装
三台虚拟机将hadoop2.4.0解压到/usr/local中。改名
mv hadoop2.4.0 hadoop
三台机器配置环境变量
三台虚拟机修改/etc/profile,这里写出hadoop和yarn的日志路径,hadoop脚本会读取到相应变量。
openjdk的默认安装路径/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
环境变量:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export ZOOKEEPER_HOME=/usr/local/zookeeper
export KAFKA_HOME=/usr/local/kafka
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$KAFKA_HOME/bin:$ZOOKEEPER_HOME/bin
source /etc/profile
三台机器创建目录
mkdir /usr/local/hadoop/tmp 用来存放临时文件
mkdir /usr/local/hadoop/logs 用来存放日志文件
mkdir /usr/local/hadoop/hdfs 用来存储集群数据
mkdir /usr/local/hadoop/name 用来存储文件系统元数据
mkdir /usr/local/hadoop/data 用来存储真正的数据
三台机器修改JAVA_HOME的值
进入hadoop解压后的目录下,找到两个.sh文件,修改JAVA_HOME的值,虽然有的时候可以读出来变量,但是还是写死,防止出错。
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh
vi yarn-env.sh
报no namenode to stop等问题
为了以防万一,三台机器安装就修改。
1.问题描述
长时间启动hadoop后,使用stop-all.sh停止时报 no namenode to stop,但jps显示namenode 确实存在
2.造成原因
hadoop默认配置是将namenode,datanode等相关进程的pid存放在/tmp目录下,但linux会定期清理/tmp目录,所以pid信息丢失,导致出现该问题
3.解决方法
修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中的HADOOP_PID_DIR
三台机器修改核心配置文件
vi /usr/local/hadoop/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
<description>HDFS的URI</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>节点上本地的hadoop临时文件夹</description>
</property>
</configuration>
输入 cp mapred-site.xml.template mapred-site.xml 将mapred-site.xml.template文件复制到当前目录,并重命名为mapred-site.xml
vi /usr/local/hadoop/etc/hadoop/mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指定mapreduce使用yarn框架</description>
</property>
vi yarn-site.xml
在配置标签中添加
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>指定resourcemanager所在的hostname</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行 MapReduce程序</description>
</property>
vi slaves
删除localhost,改为datanode的主机名
格式化hdfs
在master机器上输入 hdfs namenode -format 格式化namenode。
第一次使用需格式化一次,之后就不用再格式化,如果修改了一些配置文件,则需要重新格式化。(由于配置了环境变量任意位置执行都可以)
hdfs namenode -format
启动hadoop
start-all.sh
使用jps查看每个节点的进程
用web端查看节点信息
在浏览器打开master:8088(hadoop管理)或master:50070(hdfs管理)
关闭集群
stop-all.sh