業余菜鳥第一次使用雲服務器搭建大數據集群,下面是所有步驟
一、基礎環境設置 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&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
微信掃碼關注公眾號,有意想不到的驚喜哦!!!