关于hadoop:Hadoop伪分布模式的安装

9次阅读

共计 6790 个字符,预计需要花费 17 分钟才能阅读完成。

相干常识

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 工作解决所应用的框架。

正文完
 0