前言
虽然Hadoop一般是搭建集群后运行,但是Hadoop也可以运行在一台虚拟机上,虽然这样的方式不能投入真实的生产环境,但是对于开发人员来说,提供了一个以最小成本进行测试的途径,本文将介绍两种在一台虚拟机上运行的Hadoop
单机版Hadoop
安装最简单的一种Hadoop,仅包含Hadoop文件本体,无需进行初始化分配节点
用于测试mapreduce的jar包
压缩包安装
将Hadoop压缩包上传虚拟机
解压到/opt/softs/目录下
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/softs/
修改名称
mv hadoop-3.1.3 hadoop3.1.3
配置Hadoop命令环境
打开/etc/profile文件,将Hadoop的目录添加进PATH
//打开profile文件
vim /etc/profile
#HADOOP_HOME
export HADOOP_HOME=/opt/softs/hadoop3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
//修改后重新应用profile文件
运行单机版Hadoop
为Hadoop创建一个input输入文件夹,将文本放在里面,我们将会运行一个示例jar包
将写好的目标文件拖入虚拟机
我们将要运行如下的hadoop-mapreduce-examples-3.1.3.jar,其功能是统计输入文本中的单词,并输出每个单词数量
hadoop jar /opt/softs/hadoop3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /opt/softs/hadoop3.1.3/input /opt/softs/hadoop3.1.3/output
运行成功,查看结果
配置Hadoop伪分布式
配置Hadoop伪分布式,目的是为了在最小的成本下,运行hdfs,以进行各种功能测试
安装Hadoop
切换到另一台虚拟机
过程与上面的单机版Hadoop类似,下面将会展示与上面有所不同的地方
前往/opt/softs/hadoop3.1.3/etc/
cd /opt/softs/hadoop3.1.3/etc/
向导入其中的配置文件
core-site.xml,其中bigdata02是我本机的主机名
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址和端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata02:8020</value>
</property>
<!-- 指定hadoop数据的存储目录,该目录安装时不需要提前创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/softs/hadoop3.1.3/data</value>
</property>
</configuration>
hdfs-site.xml
由于我们搭建的是伪分布式,所以只需要填入一个副本数即可
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- HDFS数据副本数 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- namenode数据的存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/softs/hadoop3.1.3/data/dfs/name</value>
</property>
<!-- datanode数据的存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/softs/hadoop3.1.3/data/dfs/data</value>
</property>
</configuration>
拖入虚拟机
在/opt/softs/hadoop3.1.3/etc/这个路径下,修改workers文件,用于告诉Hadoop可以调用哪些虚拟机,我们只需要填入本机即可
vim workers
初始化Hadoop
hdfs namenode -format
等待初始化结束,查看Hadoop目录,已经新增了data与log文件夹
启动伪分布式Hadoop前的准备
由于Hadoop需要从bigdata02(本机)访问bigdata02(文件core-site.xml中指定的namenode节点,也是本机),所以需要给本机发放访问ssh密钥,否则Hadoop的访问会被拒绝
前往/root
查看所有文件,因为存放ssh密钥的.ssh文件夹是隐藏的,所以应当使用如下指令
cd /root/
ls -al
没有.ssh文件夹,是因为这台虚拟机从来都没有被访问过,这里我们用本机bigdata02访问本机bigdata02
ssh root@bigdata02
输入root密码即可
如下图,已经生成.ssh文件夹
进入.ssh
生成密钥
ssh-keygen -t rsa
运行时需要指定密钥生成路径与密钥备注,敲三个回车默认即可
将密钥传递给本机bigdata02
ssh-copy-id bigdata02
修改profile文件,为HDFS与YARN运行指定用户root
vim /etc/profile
//profile添加的参数
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_DATANODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
//重新应用profile文件
source /etc/profile
启动hdfs与yarn并检查是否成功
start-dfs.sh
start-yarn.sh
jps