虚拟机选用:VMware Workstation 15
使用镜像选择:ubuntu 20.04.1
环境:OpenJdk

虚拟机镜像安装

一、首先进行虚拟机镜像的安装(步骤省略)

创建hadoop用户

二、创建一个hadoop用户(可跳过)
通过ctrl+alt+t呼出终端窗口,分别输入:

#创建一个可以登录的hadoop用户,并且使用/bin/bash作为shell命令
sudo useradd -m hadoop -s /bin/bash
#创建一个hadoop用户的登录密码
sudo passwd hadoop
#给hadoop用户管理员权限,防止因为权限而导致错误
sudo adduser hadoop sudo

在这里插入图片描述

(由于我在hadoop用户中输入的以上指令,所以提示均为already exists)
然后进行用户注销(右上角齿轮状的地方选择Log out),在选择hadoop用户即可。

更改软件源

三、更改软件源(可跳过)
由于会进行OpenJdk等文件的下载,如果下载速度缓慢则需要进行改源,改源方法如下:
1. 获取ubuntu代号(ubuntu的每个发行版本都有自己的代号)

lsb_release -a

在这里插入图片描述

2.将源内的代号更改为自己ubuntu版本的代号
我的ubuntu代号为focal,则将以下所有bionic替换为focal即可

# 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
# 源碼
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
##測試版源
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

3.备份软件源文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup

4.进入源文件编辑,ctrl+A替换整个软件源文件

sudo gedit /etc/apt/sources.list

在这里插入图片描述

5.更新与升级

sudo apt-get update
sudo apt-get upgrade

更新下载源

四、进行准备工作
1.更新apt
为了防止因为没有更新而导致有些软件无法安装的情况,所以在一开始就进行apt的更新。

sudo apt-get update

2.下载vim(实在不想用,也可以采用gedit文本编辑
vim为vi的升级版,相比于vi更加方便使用

sudo apt-get install vim

安装配置SSH免密登陆

五、安装SSH并配置SSH免密登陆
由于hadoop的单机和分布式都需要用到SSH登陆,所以需要先配置好SSH
1.安装SSH server
因为ubuntu默认安装了SSH client,所以只需要安装SSH server

sudo apt-get install openssh-server

安装完成后就可以通过ssh localhost登陆本机
当SSH首次登陆时会有提示(yes/no),输入yes并按提示输入hadoop用户登录密码后即可登陆成功。
但是这个登陆是需要密码的,接下来配置免密登陆
2.配置免密登陆

#退出ssh localhost
1.  exit
2.  cd ~/.ssh/
#利用ssh-keygen生成密钥(会有一系列提示,全部回车即可)
3.  ssh-keygen -t rsa
#将密钥加入授权
4.  cat ./id_rsa.pub >> ./authorized_keys   

3.再次输入ssh localhost查看是否直接登陆无需密码
在这里插入图片描述

安装OpenJdk

六、安装OpenJdk
1.进行OpenJdk的下载

sudo apt-get install default-jre default-jdk

2.进行环境变量的配置
通过vim ~/.bashrc进入环境变量编辑
在第一行插入:

export JAVA_HOME=/usr/lib/jvm/default-java

3.使环境变量生效

source ~/.bashrc

4.通过java -version查看是否安装成功
在这里插入图片描述

安装hadoop单机

七、安装hadoop单机
1.通过ubuntu内置的火狐浏览器下载hadoop包
http://mirror.bit.edu.cn/apache/hadoop/common/
选择stable里面的非src版本,src版本是需要编译后使用的,非src版本是已经编译好了直接使用的版本,我选择的是hadoop-3.2.1.tar.gz
在这里插入图片描述
2.将下载好了的hadoop包解压

#解压到/usr/local目录(以下的下载可参考自身情况更换为Downloads)
1.  sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local 
2.  cd /usr/local/
#更改hadoop-3.2.1的名称为hadoop
3.  sudo mv ./hadoop-3.2.1/ ./hadoop
#更改hadoop用户的使用权限(如果用户不为hadoop,请将-R后的hadoop更改为自己的用户名,即sudo chown -R xxx ./hadoop)
4.  sudo chown -R hadoop ./hadoop
#进入hadoop目录
5.  cd /usr/local/hadoop
#检测是否安装成功
6.  ./bin/hadoop version

在这里插入图片描述

安装hadoop伪分布式

八、安装hadoop伪分布式
1.更改 /usr/local/hadoop/etc/hadoop/中的配置文件core-site.xml和hdfs-site.xml
1)core-site.xml文件修改为:

<configuration> 
</configuration> 

修改为下面配置:

<configuration> 
	<property>
		<name>hadoop.tmp.dir</name>
			<value>file:/usr/local/hadoop/tmp</value>      
     		<description>Abase for other temporary directories.</description>
     </property>    
     <property>     
		<name>fs.defaultFS</name>     
        	<value>hdfs://localhost:9000</value>  
	</property>
</configuration>

在这里插入图片描述

2)hdfs-site.xml文件修改为:

<configuration>
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/usr/local/hadoop/tmp/dfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>        
		<value>file:/usr/local/hadoop/tmp/dfs/data</value>
	</property>
</configuration>
 

在这里插入图片描述

2.进行NameNode的格式化
注意:多次对NameNode进行格式化会出现DataNode无法启动的情况
解决方法请参考:https://blog.csdn.net/weixin_45899210/article/details/109062497

#格式化NameNode
./bin/hdfs namenode -format

格式化成功后可以看到:
在这里插入图片描述

3.启动hadoop

#先进入hadoop目录
cd /usr/local/hadoop
./sbin/start-dfs.sh

4.查看是否启动成功

#通过jps命令查看NameNode、DataNode、 SecondaryNameNode是否存在
jps

在这里插入图片描述

实例验证

九、hadoop伪分布式实例验证
1.首先在HDFS中创建用户目录:
因为伪分布式读取的是HDFS上的数据,需要使用HDFS

./bin/hdfs dfs -mkdir -p /user/hadoop

2.创建input文件夹

#创建input文件夹
1.  ./bin/hdfs dfs -mkdir input
#将 /usr/local/hadoop/etc/hadoop 复制到分布式⽂文件系统中的 /user/hadoop/input 
2.  ./bin/hdfs dfs -put ./etc/hadoop/*.xml input
#查看文件列表
3.  ./bin/hdfs dfs -ls input

在这里插入图片描述

3.伪分布式运行MapReduce作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地input文件夹,输出结果output文件夹都删掉来验证这一点)

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
#查看位于HDFS的运行结果
./bin/hdfs dfs -cat output/* 

在这里插入图片描述

4.拉取到本地查看

#先删除本地的output文件夹(若没有则不管)
1.  rm -r ./output
# 将HDFS上的output⽂件夹拷贝到本机
2.  ./bin/hdfs dfs -get output ./output
3.  cat ./output/* 

5.Hadoop运行程序时,输出目录不能存在,否则会提示错误 “org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists” ,因此若要再次执行,需要删除output文件夹:

#删除output文件夹
./bin/hdfs dfs -rm -r output

在这里插入图片描述

通过以上步骤,hadoop伪分布式就安装成功啦

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐