1.配置 hosts、hostname(添加hosts的映射關系)
指令:vi /etc/hosts
3台虛拟機的 hosts 配置檔案如下:
(注:主從虛拟機的命名應該為master、slave1、slave2,由于不小心打錯了下面命名都為salve了)
IP 虛拟機名
2.配置 SSH無密登陸(叢集和僞分布式需要配置)
2.1 首先在 master 上生成 ssh 公鑰
指令:ssh-keygen -t rsa
然後連續按 3 個回車即可。
2.2 到生成 ssh 密鑰的目錄下檢視是否成功
指令:cd ~/.ssh/
2.3 将 id_rsa.pub 中的内容複制到 authorized_keys 檔案中。
指令:cat id_rsa.pub >> authorized_keys
2.4 将 authorized_keys 分發給另外兩個節點
指令:scp authorized_keys salve1:~/.ssh/
scp authorized_keys salve2:~/.ssh/
或者将主機id_rsa.pub檔案中内容複制到其他兩台機器authorized_keys中
2.5 測試 ssh 無密登陸是否成功
指令: ssh master
ssh salve1
ssh slave2
3 安裝jdk 并配置環境變量
3.1首先解除安裝虛拟機自帶jdk
檢視自帶jdk的版本:java -version
檢視具體安裝在虛拟機上面的java資訊:rpm -qa | grep java
删除原有虛拟機預設的JDK版本(除了noarch結尾的)
再次檢視java資訊:rpm -qa | grep java
此時自帶jdk删除成功。
将要安裝的jdk包拉至root/Downloads下:
在usr/local下建立java目錄:mkdir java
進入root/Downloads将jdk解壓至/usr/local/java下:
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /usr/local/java/
解壓成功後檢視/usr/local/java下:
配置java的環境變量:vi /etc/profile
添加如下:
使配置生效:source /etc/profile
測試是否配置成功
4.關閉防火牆
centos7中:systemctl stop firewalld.service(停止firewall)
systemctl disable firewalld.service(禁止firewall開機啟動)
firewall-cmd --state
(檢視預設防火牆狀态–關閉後顯示not running,開啟後顯示running)
其他:service iptables stop(關閉)
5.安裝zookeeper(完全分布式叢集)
5.1下載下傳并解壓到指定目錄
解壓指令:tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/
修改名字為:zookeeper
mv zookeeper-3.4.5 zookeeper
5.2 在主目錄下建立data和logs兩個目錄用于存儲資料和日志:
cd /usr/local/zookeeper
mkdir data
mkdir logs
在conf目錄下複制zoo_sample.cfg為zoo.cfg檔案或将zoo_sample.cfg改名為zoo.cfg,修改其中的内容:
tickTime=2000
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
5.3 data目錄下myid的修改
master中:echo ‘1’ > myid
slave1中:echo ‘2’ > myid
slave2中:echo ‘3’ > myid
修改完成後檢視cat myid
5.4 将master主機上的zookeeper複制到salve1和salve2中相同目錄下
指令:scp -r /usr/local/zookerper slave1:/usr/local/
scp -r /usr/local/zookerper slave2:/usr/local/
複制完成後記得修改myid檔案(分别為2和3)
5.5分别在三台主機上執行bin目錄下的zkServer.sh檢視是否配置成功
指令:進入bin目錄,啟動、停止、重新開機和檢視目前節點狀态(包括叢集中是何角色)分别執行:
./zkServer.sh start 啟動
./zkServer.sh stop 停止
./zkServer.sh restart 重新開機
./zkServer.sh status 狀态
啟動完畢後執行檢視狀态指令,若一個是leader,另外兩個是follower則證明配置成功
6.配置HADOOP
6.1:下載下傳并解壓到指定目錄
解壓指令:tar -zxvf hadoop-3.1.2.tar.gz -C /usr/local
6.2:修改配置檔案
配置檔案的路徑在 hadoop-3.1.2/etc/hadoop中
1)hadoop-env.sh
vi hadoop-env.sh
添加一行
export JAVA_HOME=/usr/local/java/jdk1.8.0_212
2)core-site.xml
vi core-site.xml
fs.defaultFS
hdfs://master/
<!-- 指定 hadoop 運作時産生檔案的存儲路徑 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.1.2/tmp</value>
</property>
![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20190703155831443.png)
3)hdfs-site.xml
vi hdfs-site.xml
<!-- namenode 上存儲 hdfs 名字空間中繼資料-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.1.2/namenode</value>
</property>
<!-- datanode 上資料塊的實體存儲位置-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-3.1.2/datanode</value>
</property>
<!-- 設定 hdfs 副本數量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
4)mapred-site.xml
vi mapred-site.xml
<!-- 指定yarn運作-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.2</value>
</property>
![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20190703155854455.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjY2NzgzNQ==,size_16,color_FFFFFF,t_70)
5)yarn-site.xml
<!-- 指定ResourceManager的位址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- reducer取資料的方式是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/2019070315590430.png)
6)workers
将原有的localhost删除,添加如下内容:
salve1
salve2
7)start-dfs.sh 和 stop-dfs.sh
進入/usr/local/hadoop-3.1.2/sbin,分别在 start-dfs.sh 和 stop-dfs.sh 中的頭部空白處添加如下内容:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
8)start-yarn.sh 和 stop-yarn.sh
進入/usr/local/hadoop-3.1.2/sbin,分别在 start-yarn.sh 和 stop-yarn.sh 中的頭部空白處添加如下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
9)配置Hadoop環境變量
在/etc/profile中添加下面内容:
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.2 export PATH= P A T H : : PATH:: PATH::HADOOP_HOME/bin:$HADOOP_HOME/sbin
由于之前配置了java的環境變量,故配置如下:
source /etc/profile
6.3 同步三台機器
指令: scp -r hadoop-3.1.2/ salve1:/usr/local/
scp -r hadoop-3.1.2/ salve2:/usr/local/
修改salve1、salve2上的環境變量與master保持一緻
6.4 啟動hadoop(主節點master,隻需要在第一次啟動時執行)
1)格式化名稱節點,在hadoop的bin目錄下執行:
指令:cd /usr/local/hadoop/hadoop-3.1.2/bin
hdfs namenode -format
出現以下資訊證明格式化成功
2)在master節點上啟動hadoop
指令:cd sbin/
./start-all.sh
3)檢視是否啟動成功(jps指令檢視程序)
master節點:
salve1節點:
salve2節點:
當 3 台節點分别出現這些 java 程序,則 hadoop 啟動成功(QuorunPeerMain是zookeeper的程序)
7.Habase配置
7.1解壓habse到指定目錄
解壓指令:tar -zxvf hbase-1.2.9.tar.gz -C /usr/local
(實際配置中未配置hbase的環境變量,仍可啟動成功)
7.2修改配置檔案
在hbase的conf目錄下
1)hbase-env.sh
加入以下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_212
export HBASE_CLASSPATH=/usr/local/hadoop-3.1.2/etc/hadoop/
export HBASE_MANAGES_ZK=false
注:BASE_MANAGES_ZK 來切換zookeeper。如果未true,是讓Hbase啟動的時候同時也啟動zookeeper。如果自己安裝了zookeeper,則這裡要配置成false。
2)hbase-site.xml
hbase.tmp.dir
/usr/local/hbase-1.2.9/tmp
zookeeper.session.timeout
3600000
<property>
<name>hbase.rootdir</name>
<value>hdfs://master/hbase</value>
</property>
<property>
<name>hbase.master</name>
<value>master</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,salve1,salve2</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>60000000</value>
dfs.support.append true
<!--禁止magor compaction-->
<property>
<name>hbase.hregion.majorcompaction</name>
<value>0</value>
</property>
<!--禁止split-->
<property>
<name>hbase.hregion.max.filesize</name>
<value>536870912000</value>
</property>
<!---->
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>2100000000</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>100</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
3)regionservers
7.3将配置好的hbase拷貝到另外兩台機器中
scp -r hbase-1.2.9/ salve1:/usr/local/
scp -r hbase-1.2.9/ salve2:/usr/local/
7.4 在master中啟動hbase
在bin目錄下執行./start-hbase.sh
7.5: jps檢視程序
master節點出現:18552 HMaster
slave1節點出現:13201 HRegionServer
slave2節點出現:xxxxx HRegionServer
則代表啟動成功
8.phoenix(操作hbase)配置
8.1将和hbase對應版本的phoenix解壓到指定目錄
解壓指令:tar -zxvf apache-phoenix-4.14.1-HBase-1.2-bin.tar.gz -C /usr/local
8.2 将phoenix安裝目錄下的
phoenix-4.8.0-HBase-0.98-server.jar
phoenix-core-4.8.0-HBase-0.98.jar
拷貝到hbase的lib目錄下
将hbase-1.2.9/conf中的hbase-site.xml檔案複制到phoenix的bin目錄下
需先将phoenix的bin目錄下原有的hbase-site.xml删除,再進行複制
指令:cp /usr/local/hbase-1.2.9/conf/hbase-site.xml /usr/local/phoenix/apache-phoenix-4.14.1-HBase-1.2-bin/bin
8.3 将master上的phoenix拷貝到salve1、salve2兩台機器上
再分别将phoenix安裝目錄下的phoenix-4.8.0-HBase-0.98-server.jar、phoenix-core-4.8.0-HBase-0.98.jar拷貝到hbase的lib目錄下
8.4在master上啟動phoenix:
bin目錄下執行:./sqlline.py master:2181
如無報錯資訊則啟動成功
8.5 sqlline操作使用hbase的一些語句:
-> !tables
建立表、插入資料、查詢資料:
退出phoenix:!q