经过上面的环境设置,我们已经可以正式安装Hadoop伪分布式了。在安装之前,请确定你已经安装了JDK1.8,并正确配置了JAVA_HOME、PATH环境变量。
在磁盘根目录下,创建一个app目录,并授权给hadoop用户。我们将会把Hadoop安装到此目录下。先切换到根目录下:
[hadoop@server201 ~]$ cd /
添加sudo前缀使用mkdir创建/app目录:
[hadoop@server201 /]$ sudo mkdir /app
将此目录的所有权授予给hadoop用户和hadoop组:
[hadoop@server201 /]$ sudo chown hadoop:hadoop /app
切换进入/app目录:
[hadoop@server201 /]$ cd /app/
使用ll -d命令查看本目录的详细信息,可看到此目录已经属于hadoop用户:
[hadoop@server201 app]$ ll -d drwxr-xr-x 2 hadoop hadoop 6 3月 9 21:35 .
将Hadoop的压缩包上传到/app目录下,并解压。
使用ll命令查看本目录,可以看到已经存在hadoop-3.2.2.tar.gz文件:
[hadoop@server201 app]$ ll 总用量 386184 -rw-rw-r-- 1 hadoop hadoop 395448622 3月 9 21:40 hadoop-3.2.2.tar.gz
使用tar命令-zxvf参数解压此文件:
[hadoop@server201 app]$ tar -zxvf hadoop-3.2.2.tar.gz
解压后,将看到一个目录hadoop-3.2.2,此时可以删除tar.gz文件,此文件已经不再需要。
查看/app目录下,已经多出hadoop-3.2.2目录:
[hadoop@server201 app]$ ll 总用量 386184 drwxr-xr-x 9 hadoop hadoop 149 1月 3 18:11 hadoop-3.2.2 -rw-rw-r-- 1 hadoop hadoop 395448622 3月 9 21:40 hadoop-3.2.2.tar.gz
删除hadoop-3.2.2.tar.gz文件,此文件已经不再需要:
[hadoop@server201 app]$ rm -rf hadoop-3.2.2.tar.gz
以下开始配置Hadoop。Hadoop的所有配置文件都在hadoop-3.2.2/etc/hadoop目录下。首先切换到此目录下,然后开始配置:
[hadoop@server201 hadoop-3.2.2]$ cd /app/hadoop-3.2.2/etc/hadoop/
在Hadoop的官网上,有关于伪分布式配置的完成教程,地址为https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.xhtml#Configuration。
大家也可以根据此教程进行伪分布式的配置学习。
步骤01 配置hadoop-env.sh文件。
hadoop-env.sh文件是Hadoop的环境文件,在此文件中需要配置JAVA_HOME变量。在此文件的第55行输入以下配置,然后按Esc键,再输入:wq保存退出即可:
export JAVA_HOME=/usr/java/jdk1.8.0_281
步骤02 配置core-site.xml文件。
core-site.xml文件是HDFS的核心配置文件,用于配置HDFS的协议、端口号和地址。
注意: Hadoop 3.0以后HDFS的端口号建议为8020,但如果查看Hadoop的官网示例,依然延续使用的是Hadoop 2之前的端口9000,以下配置我们将使用8020端口,只要保证配置的端口没有被占用即可。配置时,需要注意大小写。
使用vim打开core-site.xml文件,进入编辑模式:
[hadoop@server201 hadoop]$ vim core-site.xml
在<configuration></configuration>两个标签之间输入以下内容:
<property> <name>fs.defaultFS</name> <value>hdfs://server201:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/datas/hadoop</value> </property>
配置说明:
● fs.defaultFS:用于配置HDFS的主协议,默认为file:///。
● hadoop.tmp.dir:用于指定NameNode日志及数据的存储目录,默认为/tmp。
步骤03 配置hdfs-site.xml文件。
hdfs-site.xml文件用于配置HDFS的存储信息。使用vim打开hdfs-site.xml文件,并在<configuration></configuration>标签中输入以下内容:
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property>
配置说明:
● dfs.replication:用于指定文件块的副本数量。HDFS特别适合于存储大文件,它会将大文件切分成每128MB一块,存储到不同的DataNode节点上,且默认会每一块备份2份,共3份,即此配置的默认值为3,最大为512。由于我们只有一个DataNode,所以这儿将文件副本数量修改为1。
● dfs.permissions.enabled:访问时,是否检查安全,默认为true。为了方便访问,暂时把它修改为false。
步骤04 配置mapred-site.xml文件。
通过名称可见,此文件是用于配置MapReduce的配置文件。通过vim打开此文件,并在<configuration>标签中输入以下配置:
$ vim mapred-site.xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
配置说明:
● mapreduce.framework.name:用于指定调试方式。这里指定使用YARN作为任务调用方式。
步骤05 配置yarn-site.xml文件。
由于上面指定了使用YARN作为任务调度,所以这里需要配置YARN的配置信息,同样,使用vim编辑yarn-site.xml文件,并在<configuration>标签中输入以下内容:
<property> <name>yarn.resourcemanager.hostname</name> <value>server201</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
通过hadoop classpath命令获取所有classpath的目录,然后配置到上述文件中。
由于没有配置Hadoop的环境变量,所以这里需要输入完整的Hadoop运行目录,命令如下:
[hadoop@server201 hadoop]$ /app/hadoop-3.2.2/bin/hadoop classpath
输入完成后,将显示所有classpath信息:
/home/hadoop/program/hadoop-3.2.2/etc/hadoop:/home/hadoop/program/hadoop-3. 2.2/share/hadoop/common/lib/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/co mmon/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/hdfs:/home/hadoop/program /hadoop-3.2.2/share/hadoop/hdfs/lib/*:/home/hadoop/program/hadoop-3.2.2/share/h adoop/hdfs/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/mapreduce/lib/*:/ho me/hadoop/program/hadoop-3.2.2/share/hadoop/mapreduce/*:/home/hadoop/program/ha doop-3.2.2/share/hadoop/yarn:/home/hadoop/program/hadoop-3.2.2/share/hadoop/yar n/lib/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/yarn/*
然后将上述的信息复制一下,并配置到yarn-site.xml文件中:
<property> <name>yarn.application.classpath</name> <value> /home/hadoop/program/hadoop-3.2.2/etc/hadoop:/home/hadoop/program/hadoop-3. 2.2/share/hadoop/common/lib/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/co mmon/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/hdfs:/home/hadoop/program /hadoop-3.2.2/share/hadoop/hdfs/lib/*:/home/hadoop/program/hadoop-3.2.2/share/h adoop/hdfs/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/mapreduce/lib/*:/ho me/hadoop/program/hadoop-3.2.2/share/hadoop/mapreduce/*:/home/hadoop/program/ha doop-3.2.2/share/hadoop/yarn:/home/hadoop/program/hadoop-3.2.2/share/hadoop/yar n/lib/*:/home/hadoop/program/hadoop-3.2.2/share/hadoop/yarn/* </value> </property>
配置说明:
● yarn.resourcemanager.hostname:用于指定ResourceManger的运行主机,默认为0.0.0.0,即本机。
● yarn.nodemanager.aux-services:用于指定执行计算的方式为mapreduce_shuffle。
● yarn.application.classpath:用于指定运算时的类加载目录。
步骤06 配置workers文件。
这个文件在之前的版本叫作slaves,但功能一样。主要用于在启动时启动DataNode和NodeManager。
编辑workers文件,并输入本地名称:
server201
步骤07 配置Hadoop环境变量。
编辑/etc/profile文件:
$ sudo vim /etc/profile
并在里面添加以下内容:
export HADOOP_HOME=/app/hadoop-3.2.2 export PATH=$PATH:$HADOOP_HOME/bin
使用source命令,让环境变量生效:
$ source /etc/profile
然后使用hdfs version查看命令环境变量是否生效,如果配置成功,则会显示Hadoop的版本:
[hadoop@server201 hadoop]$ hdfs 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 /app/hadoop-3.2.2/share/hadoop/common/hadoop-comm on-3.2.2.jar
步骤08 初始化Hadoop的文件系统。
Hadoop在使用之前,必须先初始化HDFS文件系统,初始化的文件系统将会生成在hadoop.tmp.dir配置的目录下,即上面配置的/app/datas/hadoop目录下。
$ hdfs namenode -format
在执行命令完成以后,请在输出的日志中找到以下这句话,即为初始化成功:
Storage? directory /opt/hadoop_tmp_dir/dfs/name has been successfully formatt ed.
步骤09 启动HDFS和YARN。
启动和停止HDFS及YARN的脚本在$HADOOP_HOME/sbin目录下。其中start-dfs.sh为启动HDFS的脚本,start-yarn.sh为启动ResourceManager的脚本。以下命令分别启动HDFS和YARN:
[hadoop@server201 /]$ /app/hadoop-3.2.2/sbin/start-dfs.sh [hadoop@server201 /]$ /app/hadoop-3.2.2/sbin/start-yarn.sh
启动完成以后,通过jps来查看Java进程快照,你会发现有5个进程正在运行:
[hadoop@server201 /]$ jps 12369 NodeManager 12247 ResourceManager 11704 NameNode 12025 SecondaryNameNode 12686 Jps 11839 DataNode
其中:NameNode、SecondaryNameNode、DataNode是通过start-dfs.sh脚本启动的。ResourceManager和NodeManager是通过start-yarn.sh脚本启动的。
启动成功以后,也可以通过http://server201:9870查看NameNode的信息,如图2-2所示。
图2-2
可以通过http://server201:8088页面查看MapReduce的信息,如图2-3所示。
图2-3
步骤10 关闭。
关闭HDFS的YARN可以分别执行stop-dfs.sh和stop-yarn.sh脚本:
[hadoop@server201 /]$ /app/hadoop-3.2.2/sbin/stop-yarn.sh Stopping nodemanagers Stopping resourcemanager [hadoop@server201 /]$ /app/hadoop-3.2.2/sbin/stop-dfs.sh Stopping namenodes on [server201] Stopping datanodes Stopping secondary namenodes [server201]
至此,Hadoop单机即伪分布式模式安装和配置成功。下一节将学习使用Hadoop的hdfs命令操作Hadoop的HDFS文件系统。