准备工作:
- 4台节点服务器
1.1.1 JDK安装&配置好 参考JDK安装文章
1.1.2 4个节点服务器配置相互免密登录 参考配置免密登录文章- 下载Hadoop 下载地址
开发环境
- Linux平台: Centos6.5
- JDK版本:1.8( jdk-8u201-linux-x64【下载地址】)
- Hadoop 3.1.2 下载地址
1. 解压安装包到/opt
目录下
/usr
下是你安装系统是所安装的软件的安装目录;
/opt
则是按完系统后你又需要安装其他的应用软件,一般是源码包的软件,可以自己指定路径,管理员习惯性的把软件按在这,你也可以安装在其他位置。
tar -zxvf hadoop-3.1.2.tar.gz -C /opt
2. 修改配置文件
配置文件路径:
/opt/hadoop-3.1.2/etc/hadoop
-
修改
hadoop-env.sh
配置文件,hadoop环境变量
修改Hadoop的环境变量,默认的环境变量与服务器底层的环境变量有却别,因此必须修改。i. 打开全是注释项,在末尾新添加一行来配置所需的Java环境:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
ii. 配置角色进程指派
NameNode
,DataNode
,SecondAryNameNode
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root
-
修改
core-site.xml
配置文件,主节点配置文件<configuration> <!-- 指定HDFS(namenode)的通信地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://node01:9820</value> </property> <!-- 指定hadoop运行时产生文件的存储路径 --> <property> <name>hadoop.tmp.dir</name> <value>/var/hadoop/peseude</value> </property> </configuration>
-
修改
hdfs-site.xml
配置文件,从节点配置文件<configuration> <!-- 设置hdfs副本数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> <!--The secondary namenode http server address and port. --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node01:9868</value> </property> </configuration>
-
修改
workers
配置文件,配置从节点node01
3. 启动Hadoop
位于
/opt/hadoop-3.1.2
路径下
可执行文件目录
bin
启动脚本sbin
更多的启动脚本
-
格式化系统—产生集群第1个
FSImage
文件(元数据信息)./bin/hdfs namenode -format
执行成功标志:
再最下面的几行中有Storage dirextory /var/hadoop/pesude/dfs/name hsa been successfully formatted.
打印
VERSION
,生成clusterID
,生成元数据信息
-
开启
NameNode
与DataNode
./sbin/start-dfs.sh
4.成功标志
- 方式1: 使用
jps
命令:显示当前所有JAVA
进程pid
- 方式2: 查看启动后的监听端口
- 方式3: 直接访问前台界面
http://node01:9870
5. 测试上传文件
-
创建文件命令
[root@node01 hadoop-3.1.2]# ./bin/hdfs dfs --help 2019-04-04 15:22:58,841 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable --help: Unknown command Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>] [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] <path> ...] [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]] [-deleteSnapshot <snapshotDir> <snapshotName>] [-df [-h] [<path> ...]] [-du [-s] [-h] [-v] [-x] <path> ...] [-expunge] [-find <path> ... <expression> ...] [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-getfacl [-R] <path>] [-getfattr [-R] {-n name | -d} [-e en] <path>] [-getmerge [-nl] [-skip-empty-file] <src> <localdst>] [-head <file>] [-help [cmd ...]] [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]] [-mkdir [-p] <path> ...] [-moveFromLocal <localsrc> ... <dst>] [-moveToLocal <src> <localdst>] [-mv <src> ... <dst>] [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>] [-renameSnapshot <snapshotDir> <oldName> <newName>] [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...] [-rmdir [--ignore-fail-on-non-empty] <dir> ...] [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]] [-setfattr {-n name [-v value] | -x name} <path>] [-setrep [-R] [-w] <rep> <path> ...] [-stat [format] <path> ...] [-tail [-f] <file>] [-test -[defsz] <path>] [-text [-ignoreCrc] <src> ...] [-touch [-a] [-m] [-t TIMESTAMP ] [-c] <path> ...] [-touchz <path> ...] [-truncate [-w] <length> <path> ...] [-usage [cmd ...]] Generic options supported are: -conf <configuration file> specify an application configuration file -D <property=value> define a value for a given property -fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations. -jt <local|resourcemanager:port> specify a ResourceManager -files <file1,...> specify a comma-separated list of files to be copied to the map reduce cluster -libjars <jar1,...> specify a comma-separated list of jar files to be included in the classpath -archives <archive1,...> specify a comma-separated list of archives to be unarchived on the compute machines The general command line syntax is: command [genericOptions] [commandOptions]
-
创建一个文件夹
temp
./bin/hdfs dfs -mkdir /temp
命令执行的结果:
在界面展示的/temp
文件夹 -
上传
Hadoop 3.1.2
安装包大小324M,至/temp
文件夹下./bin/hdfs dfs -put /root/tools/
上传的命令展示
可视化界面的展示结果
使用命令展示目录中的文件
出现的疑问:
因为默认的Block
的大小为128M,那上传的文件到底是分割成了几块呢?存放在什么位置?
i. 可视化的Web界面可以看到已经分成的3块数量
ii. 通过可视化界面可以观察到每一个Block
都有一个Block ID
,在块存放的位置就有这些Block ID
标注的数据块