阿里云轻量应用服务器centos7搭建hadoop伪分布式集群

centos7上hadoop伪分布式集群配置

写在前面

云计算实验,hadoop完全式分布集群,没那么多服务器就搞了个伪分布式。
纯粹为了应付老师,教程是一边查一遍弄的,重复装了一次,整个实验的流程顺序很重要,步骤要是错了可能弄的东西一样但是结果不一样。其中遇到过很多错误,也并没有一一记录下来,只记录了改正后的内容。要是有跟着这个教程弄,代码或者配置没错的话,有报错可以先看参考链接里面有没有解决的方案,不行就百度吧。
教程里面那些路径,你把东西解压在哪装在哪就换成哪的路径就好,多试试就没问题了。
云服务器有个很重要的功能:快照,如果担心弄错又得重装,可以在安装完jdk
或者hadoop,还没到配置的时候就去控制台搞个快照,后面出了问题搞砸了也能回去恢复到刚装完软件那个状态重新来过。真是很有用的一个功能呢。
对于人的要求,会一点linux命令就可以了,不记得直接百度就好,没什么大问题。
xshell6安装指路:https://onlinedown.rbread04.cn/huajunsafe/Xshell6_onlinedown.exe

工具

  • 阿里云轻量应用服务器,centos7
  • xshell (windows自带的powershell也可以的)

链接ssh

ssh root@公网ip

新增用户

useradd -d /home/hadoop -m hadoop
usermod -a -G root hadoop
passwd hadoop

把用户加入sudo组

# 切换到root用户
su
# 输入密码
visudo

在这里插入图片描述

找到 root ALL=(ALL) ALL,在下面添加hadoop ALL=(ALL) ALL,保存退出

设置ssh免密登录

配置公钥和秘钥

ssh-keygen -t rsa

一路enter ,配置完成后如图所示

在这里插入图片描述

创建authorized_keys文件,并修改权限

# .ssh文件目录与hadoop安装根目录同级
cd /home/hadoop/.ssh
touch authorized_keys
chmod 600 authorized_keys

将公钥追加到authorized_keys文件中

cat id_rsa.pub >> authorized_keys

检查是否配置成功:ssh localhost , 不用输入密码连接成功则表明免密成功

下载安装

JDK8

安装jdk

sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

配置java环境变量

vim /etc/profile

添加以下变量

# set java environment  
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME  CLASSPATH  PATH 

esc,输入 :wq保存退出,执行以下命令使环境变量生效

source /etc/profile

检查配置是否正确且生效

java -version
$JAVA_HOME/bin/java -version

两条命令输出结果一致则表示JDK环境已正确配置

Hadoop

下载安装

cd ~
wger https://downloads.apache.org/hadoop/core/hadoop-3.2.1/hadoop-3.2.1.tar.gz
# 链接太慢下不下来,就使用本地下载上传服务器的方式,需要安装rzsz
yum install -y lrzsz
rz
# rz传输还是太慢了,用scp
scp c:\Users\Vcc\Downloads\Compressed\hadoop-3.2.1.tar.gz 
# scp传不上去,再换一个
root@101.37.159.40:/home/hadoop/hadoop-3.2.1.tar.gz 

解压到/home/hadoop目录下,并改名文件夹为hadoop

tar -zxvf hadoop-2.9.2.tar.gz -C /home/hadoop
mv ./hadoop-2.9.2/ ./hadoop
# 检查hadoop是否正确安装
/home/hadoop/hadoop/bin/hadoop version

若成功安装则会输出版本信息

设置hadoop环境变量

vim /etc/profile
# 添加以下内容
# set hadoop environment
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export HDFS_DATANODE_USER=hadoop
export HDFS_DATANODE_SECURE_USER=hadoop
export HDFS_NAMENODE_USER=hadoop
export HDFS_SECONDARYNAMENODE_USER=hadoop

export YARN_RESOURCEMANAGER_USER=hadoop
export YARN_NODEMANAGER_USER=hadoop 
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

esc,输入:wq保存退出

使hadoop环境变量生效

source /etc/profile

修改hadoop配置文件

配置文件目录:安装目录的/etc/hadoop目录下

cd /home/hadoop/hadoop/etc/hadoop

在这里插入图片描述

  • 配置hadoop-env.sh

    vim hadoop-env.sh
    # 修改JAVA_HOME为JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64
    

在这里插入图片描述

  • 配置core-site.xml
vim core-site.xml
<configuration>
<!--分布式集群中主节点的地址:指定端口号-->
<!--9000是RPC通信的端口-->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://localhose:9000</value>
	</property>
<!--指定hadoop进程运行中产生的数据存放的工作目录-->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/hadoop/hadoop/tmp</value>
	</property>
</configuration>
  • 配置hdfs-site.xml
vim hdfs-site.xml
<configuration>
<!--hdf的副本数,因为是伪分布式所以写1-->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/home/hadoop/hadoop/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/home/hadoop/hadoop/tmp/dfs/data</value>
	</property>
</configuration>

问题:hadoop/下并没有tmp目录
解决:创建目录

# /home/hadoop/hadoop/
mkdir tmp
cd tmp
mkdir namenode
mkdir datanode
  • 配置mapred-site.xml
vim mapred-site.xml
<configuration>
<!--指定MapReduce程序放在yarn资源调度集群上运行-->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

可能一开始目录下没有这个文件,新建保存就行

  • 配置yarn-site.xml
vim yarn-site.xml
<!--指定yarn集群中主节点地址(本机)-->
<property>
	<name>yarn.resourcemanager.hostname</name>
    <value>localhost</value>
</property>
<!--配置yarn集群中的重节点,指定map产生的中间结果传递给reduce采用的机制是shuffle-->
<property>
	<name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

关闭防火墙

# 查看防火墙状态
sudo firewall-cmd --state

在这里插入图片描述

# 若未关闭,则关闭防火墙(需要监听端口,内网,全关掉不要紧)
sudo systemctl stop firewalld.service
# 禁止防火墙开机自启
sudo systemctl disable firewalld.service

开启端口

阿里云服务器控制台>>防火墙默认开启的端口只有 8044322 三个端口,需要手动开启 50070 端口

在这里插入图片描述

目录格式化

namenode目录格式化(只需要第一次启动时格式化)

hadoop namenode -format

在这里插入图片描述

启动进程

输入jps 可以查看已成功启动的进程

在这里插入图片描述

start-dfs.sh
start-yarn.sh

在这里插入图片描述

在这里插入图片描述

存在问题:许多教程表示输入jps输出6个进程才是成功
在这里插入图片描述
而我的没有出现ResourceManager,但问题不大,启动了就好

查看hadoop

通过webUI查看hadoop集群是否启动完全成功

在浏览器中输入 公网ip:50070 , 跳转到dfs页面

在这里插入图片描述

文件上传尝试

在这里插入图片描述
没问题,说明hadoop伪分布式集群的搭建,是成了。

参考教程

终极参考教程

参考教程1

参考教程2

参考教程3

参考教程4

参考教程5

CentOS7.0安装Hadoop伪分布集群_定格我的天空的博客-CSDN博客

阿里云服务器centos7.2下搭建hadoop伪分布式环境_feng_zhiyu的博客-CSDN博客_阿里云服务器搭建hadoop环境

阿里云服务器centos7.3下搭建hadoop伪分布式环境 - StarZhai - 博客园 (cnblogs.com)

阿里云体验实验室 教你如何《搭建Hadoop环境》 - 知乎 (zhihu.com)

阿里云(轻量级Ubuntu 16.04 )服务器搭建Hadoop伪分布式集群及实现pi值的计算_MuuuuYi的博客-CSDN博客


版权声明:本文为qq_45376684原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。