3台云服务器搭建大数据集群(hadoop + Zookeeper + HBase + Hive + jstorm)

业余菜鸟第一次使用云服务器搭建大数据集群,下面是所有步骤

一、基础环境设置

1、修改三台主机的名字为 master、slave1、slave2:
hostnamectl set-hostname master

2、重启系统后,更新yum源
# 使用阿里yum源
yum install -y yum-utils device-mapper-persistent-data lvm2 git
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、# 更新yum源
yum update -y


二、jdk 和 网络环境 搭建
1、创建安装jdk1.8的文件夹(jdk从网上下载后传到服务器, 三台服务器都需要安装jdk环境)
mkdir -p /export/install
mkdir -p /data/big_data

2、解压
tar -zxvf /data/big_data/jdk-8u144-linux-x64.tar.gz -C /export/install/

3、配置java环境变量
yum -y install vim
vim /etc/profile.d/java.sh
# 复制下诉到文件中
export JAVA_HOME=/export/install/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin

3、更新profile文件使java环境生效
source /etc/profile

4、查看jdk是否安装成功
java -version

5、修改网络 
vim /etc/hosts
# 将下列添加到文件中 服务器自己的配置文件ip改为内网ip
# master
master内网ip    master
slave1的外网ip    slave1
slave2的外网ip    slave2

# slave1
master的外网ip    master
slave1内网ip    slave1
slave2的外网ip    slave2

# slave2
master的外网ip    master
slave1的外网ip    slave1
slave2内网ip    slave2



6、时钟同步
ntpdate cn.pool.ntp.org

7、配置 SSH 免密码登录(在3台服务器分别执行)
cd ~
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa


8、mater 服务器免密保存(mater服务器执行)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

9、将 slave1 节点的公钥复制到 mater    (slave1服务器执行)
ssh-copy-id -i ~/.ssh/id_rsa.pub mater

10、将 slave2 节点的公钥复制到 mater    (slave2服务器执行)
ssh-copy-id -i ~/.ssh/id_rsa.pub mater

11、现 master 服务器已经保存了所有节点的公钥, 将 master 的公钥复制到 其他节点即可实现每台服务器之间的免密登录
scp ~/.ssh/authorized_keys slave1:~/.ssh/
scp ~/.ssh/authorized_keys slave2:~/.ssh/

12、测试免密登录(在自己的节点测试连接其他节点, 连接上后使用exit即可退出)
ssh master
ssh slave1
ssh slave2


三、hadoop集群环境部署

1、 解压Hadoop安装包
tar -zxvf /data/big_data/hadoop-3.1.3.tar.gz -C /opt/
mv /opt/hadoop-3.1.3 /opt/hadoop

2、配置Hadoop
(1、) vim /opt/hadoop/etc/hadoop/core-site.xml        # 在 <configuration></configuration> 中间添加以下命令,fs.defaultFS 是用来定义 HDFS 的默认名
#称节点路径。就是我们将来访问 HDFS 文件时,如果没有指定路径,就会联系这里定义的路径的主机,去联系这台主机去寻找其路径。

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop/tmp</value>
</property>

(2、) vim /opt/hadoop/etc/hadoop/hdfs-site.xml 配置文件     在 <configuration></configuration>中间添加

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///opt/hadoop/hdfs/name</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///opt/hadoop/hdfs/data</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>slave1:9001</value>
</property>

(3、) vim /opt/hadoop/etc/hadoop/workers 配置文件 第一行的localhost改成hadoop1,并在第二行中加入 slave1 和 slave2

master
slave1
slave2

(4、) vim /opt/hadoop/etc/hadoop/mapred-site.xml        在 <configuration></configuration>中间添加

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.application.classpath</name>
    <value>
        /opt/hadoop/etc/hadoop,
        /opt/hadoop/share/hadoop/common/*,
        /opt/hadoop/share/hadoop/common/lib/*,
        /opt/hadoop/share/hadoop/hdfs/*,
        /opt/hadoop/share/hadoop/hdfs/lib/*,
        /opt/hadoop/share/hadoop/mapreduce/*,
        /opt/hadoop/share/hadoop/mapreduce/lib/*,
        /opt/hadoop/share/hadoop/yarn/*,
        /opt/hadoop/share/hadoop/yarn/lib/*
    </value>
</property>

(5、)  vim /opt/hadoop/etc/hadoop/yarn-site.xml            在 <configuration></configuration>中间添加

<property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>master:8088</value>
</property>

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 取消yarn运行模式的运行内存检测,这样就算内存达不到要求也不会kill掉任务 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

(6、) vim /opt/hadoop/etc/hadoop/hadoop-env.sh    # 在后面添加下面jdk路径

export JAVA_HOME=/export/install/jdk1.8.0_144

(7、) 更新配置hadoop-env文件
source /opt/hadoop/etc/hadoop/hadoop-env.sh

(8、) vim /opt/hadoop/sbin/start-dfs.sh     # 配置文件,在第二行中添加以下命令

export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
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

(9、) vim /opt/hadoop/sbin/stop-dfs.sh     # 配置文件,在第二行中添加以下命令

export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
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


(10、) vim /opt/hadoop/sbin/start-yarn.sh        # 在第二行中添加以下命令

export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root

(11、) vim /opt/hadoop/sbin/stop-yarn.sh            # 在第二行中添加以下命令

export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root

(12、)    vim /opt/hadoop/etc/hadoop/log4j.properties     # 取消打印警告信息    添加以下内容

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR


3、 vim /etc/profile    配置三台 hadoop 主机的 profile 文件 添加以下内容

#SET HADOOP
HADOOP_HOME=/opt/hadoop
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH

4、 更新环境变量
source /etc/profile
# 更新配置hadoop-env文件
source /opt/hadoop/etc/hadoop/hadoop-env.sh

5、同步 master 配置到 slave1、slave2
cd /opt/
scp -r hadoop root@slave1:/opt/
scp -r hadoop root@slave2:/opt/

6、格式化 HDFS 文件系统        在 master 上通过 hdfs namenode -format 命令来格式化 HDFS 文件系统
hdfs namenode -format    # 如果不成功,先 cd /opt/hadoop/etc/hadoop    后再试试

7、启动集群
cd /opt/hadoop/sbin/
./start-all.sh
jps


8、看是否可访问
http://master的外网ip:8088/cluster 
http://master的外网ip:9870

9、如果没有访问成功,则到 /opt/hadoop/logs 查看对应的 Exception



四、Zookeeper 集群搭建

1、解压Zookeeper
tar -zxvf /data/big_data/zookeeper-3.4.14.tar.gz -C /opt/
mv /opt/zookeeper-3.4.14 /opt/zookeeper

2、vim /etc/profile    # 设置Zookeeper环境变量,打开文件后,添加以下内容

#SET ZOOKEEPER
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

3、source /etc/profile  # 使Zookeeper环境变量生效

4、设置 zookeeper 配置文件
(1、) cd /opt/zookeeper/conf
cp zoo_sample.cfg  zoo.cfg        # 复制 zoo_sample.cfg 文件为 zoo.cfg

mkdir /opt/zookeeper/data        # 创建存放数据的文件夹

vim /opt/zookeeper/data/myid        #创建 myid 文件,并加入数字 0 (主节点为 0,从节点分别为 1,2)

vim /opt/zookeeper/conf/zoo.cfg    
# 将配置文件中 dataDir 的路径改为/opt/zookeeper/data
并在底部中加入以下参数:
server.0=master:2888:3888
server.1=slave1:2888:3888
server.2=slave2:2888:3888

5、将 master 上配置好的 zookeeper 文件同步到 slave1、slave2 节点上
scp -r /opt/zookeeper/ root@slave1:/opt/
scp -r /opt/zookeeper/ root@slave2:/opt/

6、使其它节点上环境生效
(1、) vim /etc/profile    # slave1、slave2 服务器下添加以下内容
#SET ZOOKEEPER
export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
(2、) source /etc/profile        # slave1、slave2服务器下

7、vim /opt/zookeeper/data/myid     修改 slave1 和 slave2 上的 myid 为1、2

31、启动 zookeeper 集群并测试
cd /opt/zookeeper/conf
zkServer.sh start        # 分别在服务器 master、slave1、slave2 上运行

8、查看是否启动成功
zkServer.sh status

如果3888端口没开放或被占用显示
JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
# 查看是否被占用 netstat -lnpt


如果成功会显示
JMX enabled by default
Using config: /home/hadoop/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower



五、HBase 安装与配置

1、 解压 hbase-1.3.6-bin.tar.gz
tar -zxvf /data/big_data/hbase-1.3.6-bin.tar.gz -C /opt/
mv /opt/hbase-1.3.6 /opt/hbase

2、vim /etc/profile     # 给每台服务器配置安装路径, 在文件的最底部加入下面内容
# SET HBASE
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin

3、source /etc/profile      # 使环境生效

4、搭建 Hbase 完全分布模式
(1、) vim /opt/hbase/conf/hbase-site.xml     # hbase-site.xml 文件 在 <configuration></configuration>中加
 <!-- 指定本机的 hbase 的存储目录 -->
  <property>
     <name>hbase.rootdir</name>
     <value>hdfs://master:9000/hbase</value>
 </property>
 <!-- 指定 hbase 的运行模式,true 代表全分布模式 --> 
 <property>
     <name>hbase.cluster.distributed</name>
     <value>true</value>
 </property>
<!--关于 Zookeeper 集群的配置-->
 <property>
     <name>hbase.zookeeper.quorum</name>
     <value>master,slave1,slave2</value>
 </property>

(2、) vim /opt/hbase/conf/regionservers     # master服务器regionservers删除localhost添加下面内容, slave1服务器和slave2服务器只保留localhost
master
slave1
slave2

(3、) vim /opt/hbase/conf/hbase-env.sh         # hbase-env.sh 文件 设置 JAVA_HOME    和 使用我们自己搭建的 zookeeper 集群
export JAVA_HOME=/export/install/jdk1.8.0_144
export HBASE_MANAGES_ZK=false

(4、) 将在 master 上配置好的复制到 slave1 和 slave2 上
scp -r /opt/hbase/ slave1:/opt
scp -r /opt/hbase/ slave2:/opt

5、启动 hbase 集群        # 如果报内存不够不需要理它(每一个服务器都需要启动)
cd /opt/hbase/bin/
./start-hbase.sh

6、# 在每个节点上分别用 jps 查看进程 

7、开放16010端口,验证是否成功
http://master的外网ip:8088/cluster 
http://master的外网ip:9870
http://master的外网ip:16010


五、Hive 安装与配置

1、安装Hive

tar -zxvf /data/big_data/apache-hive-3.1.2-bin.tar.gz -C /opt/
mv /opt/apache-hive-3.1.2-bin /opt/hive

2、vim /etc/profile # 修改配置在文件的最底部加入下面内容
# SET HIVE
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

3、使配置生效
source /etc/profile

4、配置hive
(1、) 配置前准备
cd /opt/hive/conf/
# 复制hive-env.sh.template 一份并重命名为hive-env.sh
cp hive-env.sh.template hive-env.sh

(2、) vim hive-env.sh    # 添加配置
#添加环境变量
export JAVA_HOME=/export/install/jdk1.8.0_144
export HADOOP_HOME=/opt/hadoop
export HIVE_CONF_DIR=/opt/hive/conf


(3、) vim hive-site.xml        # 新建hive-site.xml 文件 添加以下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 设置成远程连接 -->
    <property>
        <name>hive.metastore.local</name>
        <value>false</value>
    </property>

    <!-- mysql连接路径 如果mysql不在本服务器则用mysql所在的服务器公网代替localhost -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://dexinkeji.mysql.polardb.rds.aliyuncs.com:3306/kcnet_dev?characterEncoding=UTF-8&amp;useSSL=false</value>
        <description>JDBC connect string for a JDBC metastore</description>
        <!--  <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</value>  -->
    </property>
    <!-- 驱动 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!-- 用户名 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>dexin_dev</value>
    </property>
    <!-- 密码 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>Abc123456</value>
    </property>
    
</configuration>

5、配置mysql的驱动 # 用ftp工具将mysql-connector-java-5.1.47-bin.jar放到 /opt/hive/lib/目录下

6、将下面路径中的 guava-*.jar 换成 guava-23.0.jar
/opt/hadoop/share/hadoop/common/lib/
/opt/hadoop/share/hadoop/hdfs/lib/
/opt/hive/lib/


7、初始化元数据
schematool -dbType mysql -initSchema

# 看到下面信息表示初始化完成
Initalization script  completed
schemaTool completed

# 如果报 java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument错误,表示这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的
解决方法:
查看/opt/hadoop/share/hadoop/common/lib内guava-27.0-jre.jar版本
查看/opt/hive/lib内guava.jar的版本 如果两者不一致,删除版本低的,并拷贝高版本的 问题解决!

# Error: .. (state=42000,code=1061) 的错误是因为之前格式化成功过,需要将数据库中的表全部删除或者换库


8、hive   # 输入hive看是否启动成功,若启动成功会直接进入到hive里
# 报java.net.ConnectException: Call From master/192.168.0.3 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused; 错误
# 是因为集群的namenode关闭了,查看hadoop1的web是否可以访问
http://master的外网ip:8088/cluster 
http://master的外网ip:9870
http://master的外网ip:16010

# 如果不行,先把三台服务器都重启,再启动hadoop、zookeeper、hbase、tomcat、jstorm


六、安装 tomcat

1、解压安装
tar -zxvf /data/big_data/apache-tomcat-8.5.56.tar.gz -C /export/install/
mv /export/install/apache-tomcat-8.5.56 /export/install/tomcat/

2、启动tomcat
/export/install/tomcat/bin/startup.sh


七、jstorm 安装

1、上传jstorm-2.1.1.zip文件 到/opt/

2、解压安装        # 先安装unzip     # yum install -y unzip zip
unzip jstorm-2.1.1.zip
mv jstorm-2.1.1  jstorm

3、vim /opt/jstorm/conf/storm.yaml    # 修改配置文件
(1、) 将storm.zookeeper.servers:修改为
 storm.zookeeper.servers:
     - "master"
     - "slave1"
     - "slave2"
(2、) 将 nimbus.host:修改为
 nimbus.host: "master"
(3、) 将 storm.local.dir: 修改为
 storm.local.dir: "/opt/jstorm/data"
(4、) 将 supervisor.slots.ports: 修改为
 supervisor.slots.ports:
    - 6800
    - 6801
    - 6802
    - 6803

5、将storm复制到其他服务器
scp -r /opt/jstorm/ slave1:/opt/
scp -r /opt/jstorm/ slave2:/opt/

6、在master主机执行
mkdir ~/.jstorm
cp /opt/jstorm/conf/storm.yaml ~/.jstorm/

7、配置 storm ui管理界面
(1、) cp /opt/jstorm/jstorm-ui-2.1.1.war /export/install/tomcat/webapps/
(2、) cd /export/install/tomcat/webapps/
(3、) mv ROOT ROOT.old        # 备份原来的
(4、) ln -s jstorm-ui-2.1.1 ROOT    # 建立软连接

8、启动tomcat
/export/install/tomcat/bin/startup.sh

9、master启动nimbus
cd /opt/jstorm/
nohup bin/jstorm nimbus &

10、slave1、slave2启动nimbus
cd /opt/jstorm/
nohup bin/jstorm supervisor &

11、查看是否安装成功
http://master的外网ip:8080

http://master的外网ip:8088/cluster
http://master的外网ip:9870
http://master的外网ip:16010

 

posted @ 2020-09-03 11:45  吾延  阅读(1252)  评论(0编辑  收藏  举报