本文编写的时候,创建了三台虚拟机,分别为master、slev1、slev2。jdk版本为8.+。
1、下载hadoop-3.2.1.tar.gz
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
2、安装hadoop-3.2.1
(1)解压hadoop-3.2.1.tar.gz后即完成安装
tar -zxvf ./hadoop-3.2.1.tar.gz
3、配置hadoop-3.2.1
(1)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置core-site.xml文件
cd ./hadoop-3.2.1/etc/hadoop/
vi ./core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
<description>hbdf地址,安装在master上,端口为8020</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.2.1/hadoopdate</value>
<description>hadoop的数据存放地址</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
<description>缓存大小设置,单位为KB,131072KB即为默认的64M</description>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slev1:2181,slev2:2181</value>
<description>zookeeper集群地址设置,用于故障转移</description>
</property>
(2)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置hbase-site.xml文件
cd ./hadoop-3.2.1/etc/hadoop/
vi ./hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
<description>hbase数据存放的地址,hdfs://master:8020和core-site.xml中配置保持一致</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>是否开启分布式</description>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>指定zookeeper的端口号</description>
</property>
<property>
<name>hbase.master</name>
<value>60000</value>
<description>baseMaster的主机和端口号配置项,只需配置端口号即可</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slev1,slev2</value>
<description>对应的zookeeper集群,不用加端口</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>file:/usr/local/zookeeper-3.6.2/zkdata</value>
<description>zookeeper存放数据的地址,这里和zookeeper中的zoo.cfg中的配置项要保持一致</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>是否开启hbase的分布式集群模式</description>
</property>
(3)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置yarn-site.xml文件
cd ./hadoop-3.2.1/etc/hadoop/
vi ./yarn-site.xml
<!-- 以下涉及的简写: RM :ResourceManagerAM :ApplicationMaster NM :NodeManager -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
<description>RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
<description>RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等</description>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
<description>RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等</description>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
<description>管理员可以通过该地址向RM发送管理命令等</description>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
<description>RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:""</description>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
<description>指定resourcemanager的hostname为master</description>
</property>
(4)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置mapred-site.xml文件
cd ./hadoop-3.2.1/etc/hadoop/
vi ./mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>http://master:9001</value>
<description>连接jobtrack服务器的配置项,默认不写是local,map数1,reduce数1</description>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>指的是使用yarn运行mapreduce程序</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
<description>JobHistory用来记录已经finished(结束)的mapreduce运行日志,日志信息存放于HDFS目录中,默认情况下没有开启此功能</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<description>mapreduce运行日志的web访问地址</description>
</property>
(5)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置hadoop-env.sh文件,配置JDK路径,并加入如下代码,否则在启动的时候会提示没有root用户权限操作hdfs等。
cd ./hadoop-3.2.1/etc/hadoop/
vi ./hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_91/
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
(6)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置yarn-env.sh文件,配置JDK路径。
cd ./hadoop-3.2.1/etc/hadoop/
vi ./yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_91/
(7)进入到"hadoop-3.2.1/etc/hadoop/"路径下配置slaves。里面放的是其他两个节点的主机名。
cd ./hadoop-3.2.1/etc/hadoop/
vi ./slaves
注意:以上配置文件配置完成后,利用远程复制命令,复制到其他两个节点上(这里要用到ssh免密链接设置,请查看另外一篇博文“linux下配置集群机器之间免密登录”后操作)。
scp -r /usr/local/hadoop-3.2.1 slev1:/usr/local
scp -r /usr/local/hadoop-3.2.1 slev2:/usr/local
4、启动hadoop-3.2.1并验证,浏览器中输入http://172.16.5.129:8088/cluster查看hadoop集群状态,如果出不来如下界面,则有可能是hadoop启动失败了,仔细查看日志,并且核对配置文件。
cd ./hadoop-3.2.1/sbin
./start-all.sh
总结
以上就是hadoop的全分布式安装过程,至此本人的一下三篇博客搭建了一个全分布式大数据环境:
hadoop-3.2.1全分布式安装教程
apache-zookeeper-3.6.2全分布式安装
hbase-2.3.2全分布式安装