1.先准备三台linux虚拟机(ip不一定要跟我一样,三台机器之间能ping通即可),并将以下配置添加至/etc/hosts文件末尾,注意三台机器都要修改hosts
192.168.2.232 master 192.268.2.233 slave1 192.168.2.234 slave2 复制代码
2.下载jdk-8u231-linux-x64.tar.gz 密码:bn5x
3.下载hadoop3.2.1,更多下载,请点击
4.将下载好的两个文件上传至准备好的三个虚拟机,并解压缩
注意:第5步至第9步需要在三台机器上都做一遍
5.配置hadoop
进入解压缩后的hadoop文件夹:
cd /root/hadoop-3.2.1/etc/hadoop vi hadoop-env.sh 复制代码
将jdk8的安装路径配置进去:
export JAVA_HOME=/opt/jdk1.8.0_231 复制代码
6.配置java环境变量,hadoop环境变量
vi /etc/profile 复制代码
在/etc/profile末尾添加以下内容:
JAVE_HOME=/opt/jdk1.8.0_231 PATH=$JAVE_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH export PATH=$PATH:/root/hadoop-3.2.1/bin:/root/hadoop-3.2.1/sbin 复制代码
上面的路径:/opt/jdk1.8.0_231,/root/hadoop-3.2.1就是我解压缩jdk和hadoop后的绝对路径,看这个博客的小伙伴视自身情况而定
编写完毕后,通过执行以下命令使配置立马生效:
source /etc/profile 复制代码
下面,测试一下环境变量是否配置成功:
java -version 复制代码
控制台会打印出:
java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode) 复制代码
说明jdk配置成功
再执行
hadoop version 复制代码
控制台会打印出:
Hadoop 3.2.1 Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842 Compiled by rohithsharmaks on 2019-09-10T15:56Z Compiled with protoc 2.5.0 From source with checksum 776eaf9eee9c0ffc370bcbc1888737 This command was run using /root/hadoop-3.2.1/share/hadoop/common/hadoop-common-3.2.1.jar 复制代码
说明环境变量配置成功
7.配置core-site.xml
cd /root/hadoop-3.2.1/etc/hadoop 复制代码
找到core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>fs.tmp.dir</name> <value>/opt/hdfs/hadoopData</value> </property> <property> <name>fs.trash.interval</name> <value>4320</value> </property> </configuration> 复制代码
注意:7.1:因为在第一步的时候就修改了所有机器的hosts,所以这里可以直接写成hdfs://master:9000
7.2:/opt/hdfs/hadoopData是用来存储数据的空间,需要提前挂载一块大容量的磁盘
8.配置hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/opt/hdfs/hadoopData/dfs/name</value> <description>datanode 上存储 hdfs 名字空间元数据</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hdfs/hadoopData/dfs/data</value> <description>datanode 上数据块的物理存储位置</description> </property> <property> <name>dfs.replication</name> <value>2</value> <description>副本个数,默认配置是 3,应小于 datanode 机器数量</description> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <property> <name>dfs.permissions.superusergroup</name> <value>staff</value> <description>用户组</description> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> <description>不验证权限</description> </property> </configuration> 复制代码
9.修改start-dfs.sh,stop-dfs.sh
cd /root/hadoop-3.2.1/sbin 复制代码
找到start-dfs.sh,stop-dfs.sh,在文件的第二行下面加上:
HDFS_DATANODE_USER=root HDFS_DATANODE_SECURE_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root 复制代码
就是这一行下面:
#!/usr/bin/env bash 复制代码
两个文件都要加上
注意:第5步至第9步需要在三台机器上都做一遍
10.编写works文件
找到master虚拟机,也就是192.168.2.232这台机器
cd /root/hadoop-3.2.1/etc/hadoop vi works 复制代码
把下面的内容放进去:
master slave1 slave2 复制代码
因为我们已经配置了hosts,所以直接写名字即可,或者换成具体的ip也行
11.配置免密登录
在master机器上执行下面命令:
ssh-keygen -t rsa 复制代码
然后一直回车,结束后再执行下面命令:
#ssh-copy-id $ip(target服务器ip) ssh-copy-id slave1 复制代码
会提示你输入slave1的密码,按提示操作输入密码后,再执行:
ssh slave1 复制代码
根据提示操作即可无需密码登录slave1
以上操作针对master,slave2也要做一遍。
12.格式化namenode
在master机器上执行一下命令:
hdfs namenode -format 复制代码
13.启动集群
在master机器上执行以下命令:
start-dfs.sh 复制代码
关闭集群可以使用:
start-dfs.sh 复制代码
14.查看hdfs web
浏览器输入:http://192.168.2.232:9870/
点击Utillities中的Browse the file system可进行操作,目前还没有解决的就是通过web上传文件。解决了的话再补充。