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

 

微信掃碼關注公眾號,有意想不到的驚喜哦!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM