1、准备环境
jdk1.8.0_91
hadoop-3.2.0.tar.gz
centos7:(在虚拟机中创建三台centos7,可以先创建好一台配置好环境,然后克隆2台出来)
spark-master
spark-slave-1
spark-slave-2
最终达到的效果如下图:
2、安装jdk
如果不会安装jdk,可以参考我以前写的Centos7通过yum安装JDK1.8
3、下载hadoop
官网下载hadoop太慢了,我下了7个小时,csdn上的资源太贵了,本来想传一个给大家用的,结果资源存在,不能上传,
没办法了,大家可以去官网自己下载。
或者通过命令下载(也是慢的要死):wget http://archive.apache.org/dist/hadoop/core/hadoop-3.2.0/hadoop-3.2.0.tar.gz
4、安装hadoop
- 将文件下载下来以后,使用tar解压命令进行解压,我是在/usr/local文件夹下创建了一个hadoop文件夹,然后直接解压到/usr/local/hadoop下
解压命令:tar -zxvf hadoop-3.2.0.tar.gz -C /usr/local/hadoop/ - 设置环境变量
以编辑的方式打开profile文件:
vi /etc/profile
在文件底部增加下面语句:
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 刷新环境变量
source /etc/profile
- 检查是否安装成功
输入:hadoop version 发现出现如下图问题
问题:查询hadoop版本报ERROR: JAVA_HOME is not set and could not be found.
解决方法:配置hadoop-env.sh文件,修改JAVA_HOME,修改成jdk的安装路径
输入命令:vi /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/hadoop-env.sh
在文件最后添加:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64
再次查询hadoop版本(成功):hadoop version
5、创建hdfs相关目录
在“/usr/local/hadoop/hadoop-3.2.0”目录下创建hdfs相关目录(目录随便在哪了,配置的时候不要错了就行,建议直接放在hadoop目录下)
在hdfs文件夹下创建dn,nn,tmp文件夹
dn: 指定DataNode存储目录
nn: 指定NameNode存储目录
tmp: 指定hadoop存储目录
6、配置hadoop
配置文件存放在/opt/hadoop/etc/hadoop
中,先进入到hadoop文件夹中
输入命令:cd /usr/local/hadoop/hadoop-3.2.0/etc/hadoop/
- 修改hadoop-env.sh
之前解决问题的时候已经修改过了,这里就不再赘述了。 - 修改core-site.xml
输入命令:vi core-site.xml,修改内容如下:
<configuration>
<!--指定hadoop存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!--指定NameNode地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://spark-master:9000</value>
</property>
</configuration>
- 修改hdfs-site.xml
输入命令:vi hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/nn</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoop-3.2.0/hdfs/dn</value>
<final>true</final>
</property>
<!--nn web访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>spark-master:9870</value>
</property>
<!--2nn web访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>spark-slave-2:9868</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
- 修改mapred-site.xml
输入命令:vi mapred-site.xml
<configuration>
<!--指定mapreduce运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 修改yarn-site.xml
输入命令:vi yarn-site.xml
<!--指定ResourcesManager地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>spark-slave-1:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>spark-slave-1:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>spark-slave-1:8088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>spark-slave-1:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>spark-slave-1:18141</value>
</property>
<!--指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
6、格式化HDFS集群
输入命令:hdfs namenode -format
7、xsync分发脚本
到这里你可以选择克隆另外2个服务器出来,或者使用xsync脚本将创建好的hadoop文件进行分发。
如果你要用xsync脚本进行分发需要先创建ssh免密码登录,可以参考我的centos7创建ssh免密登录
创建xsync文件可以参考我之前写的创建xsync文件博客进行创建,也可以直接下载我创建好的文件
分发脚本命令:xsync hadoop-3.2.0/
这样就可以将hadoop-3.2.0文件分发到其他服务器对应的位置上了
8、启动hadoop
进入到/usr/local/hadoop/hadoop-3.2.0/sbin目录下 执行 ./start-dfs.sh 命令
发现出现以下问题:
在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
先启动spark-master服务器上启动HDFS和YARN
启动hdfs 输入命令:./start-dfs.sh
启动yarn 输入命令:./start-yarn.sh
这是查看三个服务器的进程
文章最上面的的预期结果表格对比发现
缺少了ResourcesManager进程
ResourcesManager需要在spark-slave-1中进行启动
输入命令:./start-yarn.sh
查看结果:
至此hadoop集群搭建完毕