相干常识
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总用量 24drwx------ 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总用量 708drwxr-xr-x 10 lijiawen lijiawen 4096 5月 24 16:04 appslrwxrwxrwx 1 root root 7 2月 20 07:48 bin -> usr/bindrwxr-xr-x 2 root root 4096 5月 6 16:03 bootdrwxr-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 -versionopenjdk version "11.0.11" 2021-04-20OpenJDK 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 versionHadoop 3.2.2Source code repository Unknown -r 7a3bc90b05f257c8ace2f76d74264906f0f7a932Compiled by hexiaoqiao on 2021-01-03T09:26ZCompiled with protoc 2.5.0From source with checksum 5a8f564f46624254b27f6a33126ff4This 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工作解决所应用的框架。