Hadoop伪分布模式的安装

士多啤梨

相关知识

Hadoop由Apache基金会开发的分布式系统基础架构,是利用集群对大量数据进行分布式处理和存储的软件框架。用户可以轻松地在Hadoop集群上开发和运行处理海量数据的应用程序。Hadoop有高可靠,高扩展,高效性,高容错等优点。Hadoop 框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。此外,Hadoop还包括了Hive,Hbase,ZooKeeper,Pig,Avro,Sqoop,Flume,Mahout等项目。

Hadoop的运行模式分为3种:本地运行模式,伪分布运行模式,完全分布运行模式。
(1)本地模式(local mode)
这种运行模式在一台单机上运行,没有HDFS分布式文件系统,而是直接读写本地操作系统中的文件系统。在本地运行模式(local mode)中不存在守护进程,所有进程都运行在一个JVM上。单机模式适用于开发阶段运行MapReduce程序,这也是最少使用的一个模式。

(2)伪分布模式
这种运行模式是在单台服务器上模拟Hadoop的完全分布模式,单机上的分布式并不是真正的分布式,而是使用线程模拟的分布式。在这个模式中,所有守护进程(NameNode,DataNode,ResourceManager,NodeManager,SecondaryNameNode)都在同一台机器上运行。因为伪分布运行模式的Hadoop集群只有一个节点,所以HDFS中的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序的执行。本次实验就是在一台服务器上进行伪分布运行模式的搭建。

(3)完全分布模式
这种模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。这里会存在Namenode运行的主机,Datanode运行的主机,以及SecondaryNameNode运行的主机。在完全分布式环境下,主节点和从节点会分开。


系统环境
Linux Ubuntu 20.04

任务内容
在只安装Linux系统的服务器上,安装Hadoop3.2.2伪分布模式。


任务步骤

1.创建一个用户,名为lijiawen,并为此用户创建home目录,此时会默认创建一个与lijiawen同名的用户组。

sudo useradd -d /home/lijiawen -m lijiawen  

为zhangyu用户设置密码,执行下面的语句

sudo passwd lijiawen  

按提示消息,输入密码以及确认密码即可,此处密码设置为123456

将lijiawen用户的权限,提升到sudo超级用户级别

sudo usermod -G sudo lijiawen  

后续操作,我们需要切换到zhangyu用户下来进行操作。

su - lijiawen  

2.首先来配置SSH免密码登陆

SSH免密码登陆需要在服务器执行以下命令,生成公钥和私钥对

ssh-keygen -t rsa  

此时会有多处提醒输入在冒号后输入文本,这里主要是要求输入ssh密码以及密码的放置位置。在这里,只需要使用默认值,按回车即可。

此时ssh公钥和私钥已经生成完毕,且放置在~/.ssh目录下。切换到~/.ssh目录下

cd ~/.ssh  

可以看到~/.ssh目录下的文件

lijiawen@DESKTOP-F0G7R99:~/.ssh$ ll
总用量 24
drwx------ 2 lijiawen lijiawen 4096 5月  13 15:34 ./
drwxr-xr-x 8 lijiawen lijiawen 4096 5月  27 08:32 ../
-rw-r--r-- 1 lijiawen lijiawen 1156 5月  13 15:20 authorized_keys
-rw------- 1 lijiawen lijiawen 2610 5月   6 17:27 id_rsa
-rw-r--r-- 1 lijiawen lijiawen  578 5月   6 17:27 id_rsa.pub
-rw-r--r-- 1 lijiawen lijiawen  444 5月  13 15:35 known_hosts


下面在~/.ssh目录下,创建一个空文本,名为authorized_keys

touch ~/.ssh/authorized_keys  

将存储公钥文件的id_rsa.pub里的内容,追加到authorized_keys中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  

下面执行ssh localhost测试ssh配置是否正确

ssh localhost  

第一次使用ssh访问,会提醒是否继续连接,输入“yes"继续进行,执行完以后退出
后续再执行ssh localhost时,就不用输入密码了

3.下面首先来创建两个目录,用于存放安装程序及数据。

sudo mkdir /apps  
sudo mkdir /data  

并为/apps和/data目录切换所属的用户为lijiawen及用户组为lijiawen

sudo chown -R lijiawen:lijiawen /apps  
sudo chown -R lijiawen:lijiawen /data  

两个目录的作用分别为:/apps目录用来存放安装的框架,/data目录用来存放临时数据、HDFS数据、程序代码或脚本。

切换到根目录下,执行 ls -l 命令

cd /  
ls -l  

可以看到根目录下/apps和/data目录所属用户及用户组已切换为lijiawen:lijiawen

lijiawen@DESKTOP-F0G7R99:/$ ls -l
总用量 708
drwxr-xr-x  10 lijiawen lijiawen   4096 5月  24 16:04 apps
lrwxrwxrwx   1 root     root          7 2月  20 07:48 bin -> usr/bin
drwxr-xr-x   2 root     root       4096 5月   6 16:03 boot
drwxr-xr-x  10 lijiawen lijiawen   4096 5月  19 10:05 data

4.配置HDFS。

创建/data/hadoop1目录,用来存放相关安装工具,如jdk安装包jdk-7u75-linux-x64.tar.gz及hadoop安装包hadoop-2.6.0-cdh5.4.5.tar.gz。
view plain copy

mkdir -p /data/hadoop1  

切换目录到/data/hadoop1目录,使用wget命令,下载所需的hadoop安装包OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz及hadoop-3.2.2.tar.gz。

cd /data/hadoop1  
wget http://hg.openjdk.java.net/jdk/jdk11/archive/tip.tar.gz 
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.2/hadoop-3.2.2-src.tar.gz  

5.安装jdk。将/data/hadoop1目录下OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz 解压缩到/apps目录下。

tar -xzvf /data/hadoop1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.11_9.tar.gz -C /apps  

其中,tar -xzvf 对文件进行解压缩,-C 指定解压后,将文件放到/apps目录下。

切换到/apps目录下,我们可以看到目录下内容如下:

cd /apps/  
ls -l  

下面将jdk1.7.0_75目录重命名为java,执行:

mv /apps/jdk11.0.11_9/  /apps/java  

6.下面来修改环境变量:系统环境变量或用户环境变量。我们在这里修改用户环境变量。

sudo vim ~/.bashrc  

输入上面的命令,打开存储环境变量的文件。空几行,将java的环境变量,追加进用户环境变量中。

#java  
export JAVA_HOME=/apps/java  
export PATH=$JAVA_HOME/bin:$PATH  

输入Esc, 进入vim命令模式,输入 :wq !进行保存。

让环境变量生效。

source ~/.bashrc  

执行source命令,让java环境变量生效。执行完毕后,可以输入java -version,来测试环境变量是否配置正确。如果出现下面界面,则正常运行。

lijiawen@DESKTOP-F0G7R99:/data/hadoop1$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)

7.下面安装hadoop,切换到/data/hadoop1目录下,将hadoop-3.2.2.tar.gz解压缩到/apps目录下。

cd /data/hadoop1  
tar -xzvf /data/hadoop1/hadoop-3.2.2.tar.gz -C /apps/  

为了便于操作,我们也将hadoop-3.2.2重命名为hadoop。

mv /apps/hadoop-3.2.2/ /apps/hadoop  

8.修改用户环境变量,将hadoop的路径添加到path中。先打开用户环境变量文件。

sudo vim ~/.bashrc  

将以下内容追加到环境变量~/.bashrc文件中。

#hadoop  
export HADOOP_HOME=/apps/hadoop  
export PATH=$HADOOP_HOME/bin:$PATH  

让环境变量生效。

source ~/.bashrc  

输入hadoop version验证hadoop环境变量配置是否正常

lijiawen@DESKTOP-F0G7R99:/data/hadoop1$ hadoop version
Hadoop 3.2.2
Source code repository Unknown -r 7a3bc90b05f257c8ace2f76d74264906f0f7a932
Compiled by hexiaoqiao on 2021-01-03T09:26Z
Compiled with protoc 2.5.0
From source with checksum 5a8f564f46624254b27f6a33126ff4
This command was run using /apps/hadoop/share/hadoop/common/hadoop-common-3.2.2.jar

9.下面来修改hadoop本身相关的配置。首先切换到hadoop配置目录下。

cd /apps/hadoop/etc/hadoop  

10.输入vim /apps/hadoop/etc/hadoop/hadoop-env.sh,打开hadoop-env.sh配置文件。

vim /apps/hadoop/etc/hadoop/hadoop-env.sh  

将下面JAVA_HOME追加到hadoop-env.sh文件中。

export JAVA_HOME=/apps/java  

11.输入vim /apps/hadoop/etc/hadoop/core-site.xml,打开core-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/core-site.xml  

添加下面配置到<configuration>与</configuration>标签之间。

<property>  
    <name>hadoop.tmp.dir</name>  
    <value>/data/tmp/hadoop/tmp</value>  
</property>  
<property>  
    <name>fs.defaultFS</name>  
    <value>hdfs://localhost:9000</value>  
</property>  

这里有两项配置:
一项是hadoop.tmp.dir,配置hadoop处理过程中,临时文件的存储位置。这里的目录/data/tmp/hadoop/tmp需要提前创建。

mkdir -p /data/tmp/hadoop/tmp  

另一项是fs.defaultFS,配置hadoop HDFS文件系统的地址。

12.输入vim /apps/hadoop/etc/hadoop/hdfs-site.xml,打开hdfs-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/hdfs-site.xml  

添加下面配置到<configuration>与</configuration>标签之间。

<property>  
    <name>dfs.namenode.name.dir</name>  
    <value>/data/tmp/hadoop/hdfs/name</value>  
</property>  
 <property>  
     <name>dfs.datanode.data.dir</name>  
     <value>/data/tmp/hadoop/hdfs/data</value>  
 </property>  
 <property>  
     <name>dfs.replication</name>  
     <value>1</value>  
 </property>  
 <property>  
     <name>dfs.permissions.enabled</name>  
     <value>false</value>  
 </property>  

配置项说明:

dfs.namenode.name.dir,配置元数据信息存储位置;
dfs.datanode.data.dir,配置具体数据存储位置;
dfs.replication,配置每个数据库备份数,由于目前我们使用1台节点,所以,设置为1,如果设置为2的话,运行会报错。
dfs.permissions.enabled,配置hdfs是否启用权限认证

另外/data/tmp/hadoop/hdfs路径,需要提前创建,所以我们需要执行

mkdir -p /data/tmp/hadoop/hdfs  

13.输入vim /apps/hadoop/etc/hadoop/slaves,打开slaves配置文件。

vim /apps/hadoop/etc/hadoop/slaves  

将集群中slave角色的节点的主机名,添加进slaves文件中。目前只有一台节点,所以slaves文件内容为:

localhost  

14.下面格式化HDFS文件系统。执行:

hadoop namenode -format  

15.切换目录到/apps/hadoop/sbin目录下。

cd /apps/hadoop/sbin/  

16.启动hadoop的hdfs相关进程。

./start-dfs.sh  

这里只会启动HDFS相关进程。

17.输入jps查看HDFS相关进程是否已经启动。

jps  

我们可以看到相关进程,都已经启动。

18.下面可以再进一步验证HDFS运行状态。先在HDFS上创建一个目录。

hadoop fs -mkdir /myhadoop1  

19.执行下面命令,查看目录是否创建成功。

hadoop fs -ls -R /  

以上,便是HDFS安装过程。

20.下面来配置MapReduce相关配置。再次切换到hadoop配置文件目录

cd /apps/hadoop/etc/hadoop  

21.下面将mapreduce的配置文件mapred-site.xml.template,重命名为mapred-site.xml。

mv /apps/hadoop/etc/hadoop/mapred-site.xml.template  /apps/hadoop/etc/hadoop/mapred-site.xml  

22.输入vim /apps/hadoop/etc/hadoop/mapred-site.xml,打开mapred-site.xml配置文件。

vim /apps/hadoop/etc/hadoop/mapred-site.xml  

将mapreduce相关配置,添加到<configuration>标签之间。

<property>  
    <name>mapreduce.framework.name</name>  
    <value>yarn</value>  
</property>  

这里指定mapreduce任务处理所使用的框架。

阅读 848
7 声望
1 粉丝
0 条评论
7 声望
1 粉丝
文章目录
宣传栏