Hadoop完全分布式搭建,以及运行在完全分布式hadoop集群上的各组件的搭建(hive、zookeeper、hbase、spark、storm、flink)

记录在CSDN的第一篇文章,作为小白,希望各位大佬多多指教。该文章的Hadoop完全分布式集群搭建是我同其他两个小伙伴用三台电脑搭建的,记录了我们搭建过程以及遇到的问题。

一、前期准备工作

1、系统环境

本集群搭建在Ubuntu16.04下进行,集群搭建均为三台机器,分别为一个主节点(master)与两个从节点(slave01,slave02)。
所用软件版本为jdk1.8.0_301,hadoop2.7.3,zookeeper3.4.5,hbase1.4.8,hive2.3.9,spark2.1.0,flink-1.9.1-bin-scala_2.11,storm1.2.2,eclipse-4.7.0

2、三台机器互ping

为了区分三台机器,执行sudo vim /etc/hostname命令修改显示的主机名。master主机节点添加如下内容:master;同样slave01节点与slave02节点各自加上对应的主机名。配置完成后,重启虚拟机,重启后会看到机器名的变化。
三台机器要在同一局域网下,可以用ifconfig命令查看各自的IP地址,我们这里三台机器的IP地址分别为:

master(192.168.43.139)
slave01(192.168.43.55)
slave02(192.168.43.25)

用户名均为hadoop。首先修改三台机器的/etc/hosts文件,添加同样的配置:

127.0.0.1 localhost
192.168.43.239 master
192.168.43.55 slave01
192.168.43.56 slave02

接着通过ping命令测试三台机器的连通性。

例如在master节点上运行ping 192.168.43.55命令来测试能否连接到slave01。

3、配置ssh无密码登录本机和访问集群机器

三台机器运行 ssh localhost 命令测试能否连接到本机localhost,登录成功会显示上一次登录的时间。如果不能登录本地则要安装openssh-server,并生产ssh公钥:

sudo apt-get openssh-server
ssh-keygen -t rsa -P “”
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_key

在保证了三台机器都能连接到本地后,还需要master主机免密登录slave01slave02主机,在master主机上执行以下命令,将masterid_rsa.pub传给两个slave主机:

scp ~/.ssh/id_rsa.pub hadoop@slave01:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@slave02:/home/hadoop/

然后分别在slave01,slave02上运行ls ~ 命令查看是否接收到id_rsa.pub
确认接受到后,在slave01,slave02主机上执行如下命令:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

之后让master主机免密登录slave01,slave02主机:

ssh slave01
ssh slave02

注意:第一次免密登录需要slave节点密码,之后就不需要了;在执行ssh slave02的时候记得先退出已登录的slave01主机

4、遇到的问题及解决办法

(1) 由于各节点使用的是虚拟机安装的Linux系统,需要更改网络连接方式为桥接网卡模式,才能实现多个节点互连。然而在设置桥接网络的时候,虚拟机就连不上网,查阅资料之后,在VMware的虚拟网络编辑器中还原默认设置,重启之后就能连接上网络了。
(2) 主机与节点连接的过程中,报了detination host unreachabled的错误,显示连接不上主机,不知道具体是什么原因,然后我们用了同一个热点之后,就成功连接上了。

二、Hadoop分布式集群搭建

1、安装JDK

分别在三台机子上安装jdk,安装成功后编辑~/.bashrc文件,添加如下内容:
在这里插入图片描述执行source ~/.bashrc命令让环境变量立即生效

2、安装Hadoop

直接在master主机上安装hadoop,配置完好后将hadoop发给两个从节点。把下载后的hadoop安装包解压到/usr/local目录下:

sudo tar -zxvf ./hadoop-2.7.3.tar.gz -C /usr/local   #需要进入到hadoop安装包所在目录
cd /usr/local
sudo mv hadoop-2.7.3 hadoop  #修改文件名
sudo chown -R hadoop ./hadoop  #赋予文件权限

编辑~/.bashrc 文件,添加如下内容:
在这里插入图片描述执行source ~/.bashrc 让环境变量生效。

3、Hadoop集群配置

(1)修改master主机的slaves文件,位于/usr/local/hadoop/etc/hadoop文件下,写入如下内容,每行一个

slave01
slave02

(2)修改core-site.xml文件
在这里插入图片描述
(3)修改hdfs-site.xml文件
在这里插入图片描述
(4)修改mapre-site.xml文件(先把mapred-site.xml.template复制,再修改文件名)
在这里插入图片描述
(5)修改yarn-site.xml文件
在这里插入图片描述
配置好后将master上的/usr/local/hadoop文件传送到其他两个节点上,由于文件比较大最好先压缩再传送:

tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./Hadoop.master.tar.gz slave01:/home/Hadoop
scp ./Hadoop.master.tar.gz slave01:/home/hadoop

传送完成后在slave01,slave02上执行:

sudo tar -zxvf ~/hadoop.master.tar.gz -C /usr/local
cudo chown -R hadoop /usr/local/Hadoop

(6)启动hadoop集群
master主机上执行:

cd /usr/local/Hadoop
bin/hdfs namenode -format
sbin/start-all.sh

运行成功后,分别在三台机子上输入jps命令,可看到:
master节点:
在这里插入图片描述
两个slave节点:
在这里插入图片描述

4、遇到的问题及解决办法

master运行结果有DataNode,反而没有NameNode
在这里插入图片描述
原因:存在DataNode是因为在修改slaves文件时,没有把里面的localhost删掉,没有NameNode是一开始配置hdfs-site.xml文件时没有加入下列内容:

在这里插入图片描述

三、Zookeeper完全分布式安装

1、安装zookeeper

master主机上安装zookeper,配置好后复制给其他节点

sudo tar -zxvf ./zookeeper-3.4.5.tar.gz -C /usr/local
cd /usr/local
mv zookeeper-3.4.5 zookeeper
sudo chown -R hadoop ./zookeeper

2、配置环境

vim ~/.bashrc

在这里插入图片描述
输入source ~/.bashrc命令使环境变量生效
创建data文件目录:

mkdir -p /usr/local/zookeeper/zkData

进入/usr/localzookeeper/conf目录下修改配置文件:

cp zoo-sample.cfg zoo.cfg
vim zoo.cfg

添加如下配置:
在这里插入图片描述

3、设置当前zookeeper的权值

进入到/zkDate目录下创建文件myid

cd /usr/local/zookeeper/zkData
vim myid

master写入权值1 ,此1对应的是server.1中的1,每台机器的myid的值对应server.后面的数字
master主机上的zookeeper复制给其他两个节点:

cd /usr/local
sudo tar -zcf ./zookeeper.tar.gz ./zookeeper
scp ./zookeeper.tar.gz hadoop@slave01:/usr/local
scp ./zookeeper.tar.gz hadoop@slave02:/usr/local

复制完成后,slave01slave02解压压缩包,Slave01slave02修改myid文件,Slave01写入2slave02写入3

4、启动zookeeper

每台机子都要启动:

cd /usr/local/zookeeper
./bin/zkServer.sh start

输入jps后,masterslave节点都出现了QuorumPeerMain进程:
在这里插入图片描述
在这里插入图片描述

5、遇到的问题及解决办法

使用scp命令时,遇到了无法传输的问题,我们首先是把sshd_config文件中的PermitRootLogin后面的no改为yes,然后重启ssh服务。
但是改完之后还有权限错误,后来发现是因为一开始没有将hadoop用户授权给zookeeper,最后使用了chown命令授权,再传输文件,成功传送。

四、HBase完全分布式安装

1、安装HBase

(1)解压授权

sudo tar -zxvf ./hbase-1.4.8-bin.tar.gz -C /usr/local
cd /usr/local
mv hbase-1.4.8-bin hbase
sudo chown -R hadoop ./hbase

(2)配置环境变量

vim ~/.bashrc:

在这里插入图片描述
source ~/.bashrc 使环境变量立即生效

2、修改配置文件

cd /usr/local/hbase/conf

配置regionservers,并加入两个从节点的主机名:

vim regionservers
slave01
slave02

修改hbase-site.xml文件
在这里插入图片描述
拷贝hdfs-site.xml,core-site.xmlhbaseconf目录下

cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hbase/conf
cp /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/hbase/conf

hbase复制给从节点

cd /usr/local
sudo tar -zcf ./hbase.tar.gz ./hbase
scp -r ./hbase.tar.gz hadoop@slave01:/usr/local
scp -r ./hbase.tar.gz hadoop@slave02:/usr/local

3、启动hbase集群

要先启动hadoop与zookeeper
master上启动hbase

cd /usr/local/hbase
./bin/start-hbase.sh

启动成功后可以看到master节点上多了HMaster进程:
在这里插入图片描述
Slave01slave02节点上多了HRegionServer进程:
在这里插入图片描述

五、Hive完全分布式安装

1、三个节点上安装MySQL、创建元数据库

sudo apt-get update
sudo apt-get install mysql-server

启动mysql服务器

server mysql start

进入mysql界面创建hive数据库

mysql -u root -p
mysql>create database hive

配置mysql允许hive接入
master节点配置:

mysql>grant all on “.” To hive@localhost identified by ‘hive’;
mysql>flush privileges;

slave节点配置:

mysql>grant all on “.” To hive@slave01(slave02) identified by ‘hive’;
mysql>flush privileges;

2、master节点上安装hive

(1)解压安装包到/usr/local目录下

sudo tar -zxvf ./apache-hive-2.3.9-bin.tar.gz -C /usr/local
cd /usr/local
sudo mv apache-hive-2.3.9-bin hive
sudo chown -R hadoop ./hive

(2)配置环境变量

vim ~/.bashrc

在这里插入图片描述
source ~/.bashrc 使环境变量生效
(3)在hive目录下创建iotmp目录

mkdir iotmp

(4)修改配置文件hive-site.xml文件

cd /usr/local/hive
cp hive-default.xml.template hive-site.xml
vim hive-site.xml

添加如下内容:
在这里插入图片描述

将所有的${system:java.io.tmpdir}替换成/usr/local/hive/iotmp,最好修改,防止出错。

(5)修改hive-env.sh文件,添加如下内容:
在这里插入图片描述
(6)将mysql的jar包拷贝到hive的lib目录下
这里用的是mysql-connector-java-5.1.40

cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib

(7)将hive目录复制给从节点

cd /usr/local
scp -r ./hive hadoop@slave01:/usr/local
scp -r ./hive hadoop@slave02:/usr/local

(8)复制完成后配置从节点的文件
从节点修改hive-site.xml文件

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>

localhost改为对应的主机名

3、启动hive集群

三台机子都要启动
主机启动前先初始化元数据

cd /usr/local/hive
./bin/schematool -dbType mysql -initSchema

初始化成功后启动hive

./bin/hive

启动成功后有RunJar进程

hive>show databases;

4、遇到的问题及解决办法

(1)master启动成功但是执行命令时报错

ERROR exec.DDLTask: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

最后,修改conf/hive-site.xml中的“hive.metastore.schema.verification”的值改为false,即可以执行hive命令。
(2)master节点hive启动成功,而slave01slave02节点均启动失败,输入show databases命令后报错提示未初始化;
(3)master节点初始化又报错
原因:之前初始化过了,不能反复初始化
解决方法:删除MySQL中创建的hive数据库,再重新创建,之后初始化元数据再启动hive,masterslave节点均可启动和执行命令。

总结:在启动hive之前要先初始化元数据,之后master与slave节点再开启,顺序不能颠倒。

六、Spark完全分布式安装

1、安装Spark

(1)解压安装包

sudo tar -zxvf ./spark-2.1.0-bin-without-hadoop.tgz -C /usr/local
cd /usr/local
mv spark-2.1.0-bin-without-hadoop spark
sudo chown -R hadoop ./spark

2、配置文件

cd /usr/local/spark/conf    #进入conf文件
cp spark-env.sh.template spark-env.sh  #复制spark-env.sh.template并改名为spark-env.sh
cp slaves.template slaves

(1)修改

spark-env.sh

在这里插入图片描述
(2)修改slaves文件
在这里插入图片描述
(3)将安装包复制给其他文件

scp -r /usr/local/spark hadoop@slave01:/usr/local
scp -r /usr/local/spark hadoop@slave02:/usr/local

3、启动spark集群

master上启动

cd /usr/local/spark
./sbin/start-all.sh

启动成功后可看到master节点多了Master进程,slave01slave02节点多了Worker进程:
在这里插入图片描述
在这里插入图片描述
启动spark-shell
三个节点分别进入bin目录

cd /usr/local/spark/bin
./spark-shell

启动成功后截图:
在这里插入图片描述

七、Flink完全分布式安装

1、安装Flink

sudo tar -zxvf ./flink-1.9.1-bin-scala_2.11.tgz -C /usr/local
cd /usr/local
mv flink-1.9.1 flink
sudo chown -R hadoop ./flink

2、在master节点上配置flink

进入conf目录,编辑flink-conf.yaml文件

cd /usr/local/flink/conf
vim flink-conf.yaml

编辑如下内容(注意,冒号后面一定要有一个空格)
在这里插入图片描述
配置好后flink复制给其他节点

scp -r /usr/local/flink hadoop@slave01:/usr/local
scp -r /usr/local/flink hadoop@slave02:/usr/local

3、配置slave节点信息

cd /usr/local/flink/conf
vim slaves

每台机器添加从节点的主机名或IP(把原本的localhost删掉)

slave01添加slave01
slave02添加slave02

4、启动flink集群

master节点上启动flink

cd /usr/local/flink
./bin/start-cluster.sh

启动成功后可看到master节点:
在这里插入图片描述
slave节点:
在这里插入图片描述

八、Storm完全分布式安装

1、安装Storm

解压压缩包

sudo tar -zxvf ./apache-storm-1.2.2.tar.gz -C /usr/local
cd /usr/local
mv storm-1.2.2 storm
sudo chown -R hadoop ./storm

2、配置环境变量

(1)vim ~/.bashrc
在这里插入图片描述
(2)进入conf目录修改storm.yaml文件

cd /usr/local/storm/conf
vim storm.yaml

编辑如下内容:
在这里插入图片描述
(3)分发到其他节点

scp -r /usr/local/storm hadoop@slave01:/usr/local
scp -r /usr/local/storm hadoop@slave02:/usr/local

3、启动storm

启动前要先启动hadoopzookeeper集群
(1)在master启动nimbus、supervisor、core、logviewer进程

cd /usr/local/storm
./bin/storm nimbus &
./bin/storm supervisor &
./bin/storm ui &
./bin/storm logviewer 

在这里插入图片描述
在这里插入图片描述
启动成功截图:
在这里插入图片描述
(2)在从节点上启动supervisor、logviewer进程

cd /usr/local/storm
./bin/storm supervisor &
./bin/storm logviewer &

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值