下載相關tar.gz包: http://archive.cloudera.com/cdh5/cdh/5/
========redis 安裝 和集羣搭建=========
1)tar -zxvf redis-3.0.0-rc2.tar.gz //將壓縮包解壓
2)yum install gcc //安裝gcc插件,gcc是一個c語言的編譯工具
3)cd redis-3.0.0 進入redis目錄
make //運行make命令,編譯redis
4)cd redis-3.0.0/src目錄,裏面會有redis-cli等很多文件
make install //打印It is good idea to run 'make test' ,則安裝成功
5)//修改配置文件redis.conf後臺啓動,修改6個redis配置文件
deamonize yes //yes爲後臺啓動
port 8001 //分別對每臺機器端口進行設置
bind 192.168.0.60 //必須要綁定當前機器的ip,這裏方便redis集羣定位機器,不綁定可能會出現循環查找集羣節點機器的情況
dir /usr/local/redis-cluster/8001/ //指定數據文件存放位置,必須要指定不同的目錄位置,不然誰丟失數據
cluster-enabled yes //啓動集羣模式
cluster-config-file nodes-8001.conf //這裏800x最好和port對應上
cluster-node-timeout 5000
appendonly yes
啓動6個redis
6)redis集羣需要ruby命令,所以我們需要安裝ruby
a)yum install ruby
b)yum install rubygems
c)gem install redis --version 3.0.0 //安裝redis和ruby的通訊接口
7)在redis3安裝目錄下 執行redis-trib.rb命令創建整個redis集羣
cd /usr/local/redis3/src
//下面命令中 1 代表主服務器和從服務器的 分配比例,主/從,1 代表3個主3個從(如果有9臺機器 1主2從,配置值爲0.5)。前面3臺是主,後面3臺是從
./redis-trib.rb create --replicas 1 192.168.0.60:8001 192.168.0.60:8002 192.168.0.60:8003 192.168.0.60:8004 192.168.0.60:8005 192.168.0.60:8006
8)驗證集羣
連接任意一個客戶端即可: ./redis-cli -c -h -p(-c表示集羣模式,指定ip地址和端口號)
如:/usr/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800x
進行驗證:cluster info (查看集羣信息) 、cluster nodes(查看節點列表)
進行數據操作驗證
關閉集羣則需要逐個進行關閉,使用命令: /usr/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800x shutdown
========redis 安裝 和集羣搭建 end=========
========redis 集羣 水平擴展=========
添加兩個redis服務8007和8008:
1)mkdir 8007 //新建8007目錄
mkdir 8008
2)cp redis.conf /usr/local/redis-cluster/8007 //複製任意一個配置文件到8007目錄//配置文件需要修改三個地方 將端口改成8007
cp redis.conf /usr/local/redis-cluster/8008
3)redis-server /usr/local/redis-cluster/8007/redis.conf //啓動redis
redis-server /usr/local/redis-cluster/8008/redis.conf
4)ps -ef|grep redis //查看redis進程
5)redis-cli -c -h 192.168.0.61 -p 8001 //連接任意一臺集羣內的redis實例//-c clustr的簡稱 -h ip -p端口
cluster nodes //查看集羣的狀態 有哪幾個節點,上一行執行完再執行此命令
6)cd redis-cluster/ //進入到此目錄 執行下面一行命令
/usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.0.61:8007 192.168.0.61:8001 //使用trib添加主節點,將8007添加到集羣,8001可以是集羣中任意一臺機器 //此時8007已經加入到集羣 但是沒有hash槽位。
使用命令5)查看集羣狀態。
7)./redis-trib.rb reshard 192.168.0.61:8001 //選擇主節點8001對其進行重新分片(分配hash槽)
How many slots do you want to move(from 1 to 16384)? 600 //需要多少個槽移動到新節點上,自己設置,如600個hash槽
What is the receiving node ID? qweqweqw123wer123dsf //把這600個hash槽移動到哪個節點上去,需要制定節點id
Please enter all the source node IDs
...
Source node 1:all //輸入all爲從所有主節點(8001,8002,8003)中分別抽取相應的槽數制定到新節點中,抽取總數爲600個
Do you want to proceed with the proposed reshard plan(yes/no)? yes //輸入yes確認開始執行分片任務
//以後爲添加主節點,下面來添加子節點 將8008添加爲8007的從節點
1)cd redis-cluster/ //進入到此目錄 執行下面一行命令
/usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.0.61:8008 192.168.0.61:8004 //將8008添加到集羣//8004必須爲主節點 //此時8008爲主節點 下面修改成8007的從節點
2)redis-cli -c -h 192.168.0.61 -p 8008 //連接到8008
clustor nodes //查看集羣狀態
cluster replicate lsdfsd12312erwer1212 //將8008節點設置爲從節點,後面是主節點8007的id
clustor nodes //查看集羣狀態//此時8008已經爲8007的從節點
添加8007主節點,添加8008從節點 完成。
//刪除從節點8008,
redis-trib.rb del-node 192.168.0.61:8008 qwqwe123qweqw123 //用del-node刪除從節點8008,//指定刪除節點ip、8008端口、8008節點的id
//刪除主節點8007
redis-trib.rb reshard 192.168.0.61:8007 //將節點中的槽位移除
How many ...? 599 //移除的槽位數,這裏不會是正好600個槽
What is the receiving node ID? qweqwesdf123sdfsd12 //把數據移動到哪裏?8001的主節點id
Please enter all the source node IDs
...
Source node 1:wersdfsda123ssdfd //這裏是數據源,也就是8007節點id,將8007的數據移除
Source node 2:done //done開始生產執行計劃
... ....
Do you want to proceed with the proposed reshard plan(yes/no)? Yes //yes 開始執行遷移
redis-trib.rb del-node 192.168.0.61:8007 qwd11fgqwe23w123sdsd22 //刪除主節點8007,後面是8007的id
刪除完成。
集羣中的數據是分散存儲到每個主節點中。
高可用配置,使用哨兵
========redis 集羣 水平擴展 end=========
=========kafka 集羣============================
kafka 搭建 https://ke.qq.com/webcourse/index.html#cid=308769&term_id=100366014&taid=2184948648031777&vid=z1427gwkoou
生產者、消費者(組)、zookeeper、broker(服務,一臺主機最好一個broker,不要設置多個)、主題--分區--副本因子
1)tar -zxcf kafka_2.11-0.10.0.1.tgz //解壓包
2)vi /etc/profile //環境變量文件,添加kafka目錄,每個主機都要添加
添加 export KAFKA_HOME=/keduox/kafka_2.11-0.10.0.1
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile //刷新文件
3)vi kafka_2.11-0.10.0.1/config/server.properties
broker.id=0 //每個kafka配置不同的id,master id一般設置爲0
log.dirs=/data/kafka-logs
zookeeper.connect=master,slave01,slave02 //自己的zk集羣地址 //可以設置多臺 用','分割
4)同步到其他節點:
scp -rq /usr/local/kafka_2.11-0.10.2.1/ hadoop101:/usr/local //將kafka_2.11-0.10.2.1目錄複製到 主機hadoop101的local目錄下
5)zkServer.sh start //啓動zk
6)啓動所有kafka,一臺一臺啓動
bin/kafka-server-start.sh -daemon config/server.properties
7)創建集羣:kafka-topics.sh --create --zookeeper master,slave01,slave02 --topic mytopic --partitions 3 --replication-factor 3 //啓動kafka partitions(分區)3個,replication-factor(副本)3個
kafka-topics.sh --describe --zookeeper master,slave01,slave02 --toopic mytopic //查看kafka集羣運行情況,裏面的'1,2,0'是brokerId
jps顯示當前所有java進程pid的命令
在zk中查看kafka存儲數據的目錄:
ls /brokers/topics/obd-data-0/partitions/0/state //提供者數據
ls /consumers/console-consumer-6693/offsets/drivedata-to-hbase-topic01/0 //消費者數據
zk中控制鎖,zk有個叫臨時順序節點 來控制共享鎖、排它鎖,避免死鎖。
zk中節點類型:持久節點、持久有序節點、臨時節點、臨時有序節點
臨時節點:當客戶端斷開連接的時候,節點刪除,不允許有子節點
===zk單機搭建 https://study.163.com/course/courseLearn.htm?courseId=1003379006#/learn/video?lessonId=1003856244&courseId=1003379006
1)tar -zxf zookeeper-3.4.6.tar.gz
2)cd zookeeper-3.4.6
3)mkdir data
4)配置環境變量,$>vi /etc/environment
ZOOKEEPER_HOME=/soft/zk
PATH="... :/soft/zk/bin"
source /etc/environment //栓新環境變量
5)配置文件
cp zoo_sample.cfg zoo.cfg //拷貝一個簡單的配置文件 爲zoo.cfg
conf/zoo.cfg內容如下
tickTime=2000 //心跳時間
dataDir=/path/to/zookeeper/data //數據文件
clientPort=2181 //端口
initLimit=5 //初始化限制數
sysncLimit=2 //同步限制
6)啓動zk服務器 , $>zkServer.sh start
7)啓動客戶端命令行程序,
$>zkCli.sh
ls / //查看客戶端跟節點中有哪些子節點
ls /zookeeper
get /zookeeper/quota //查尋此節點的值
8)netstat -ano | more //查看開啓的端口,有2181端口 表示zk啓動成功
=========zk僞分佈式搭建 https://study.163.com/course/courseLearn.htm?courseId=1003379006#/learn/video?lessonId=1003851266&courseId=1003379006
zk集羣配置文件在 zk/conf/目錄下 zoo1.cfg、zoo2.cfg、zoo3.cfg
zoo1.cfg內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1 //需要新建此目錄
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo2.cfg內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data2
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
zoo3.cfg內容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data3
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
/home/ubuntu/zk/data1目錄下新建myid 內容1 新建命令如: zk/data1$ echo 1 >> myid
/home/ubuntu/zk/data2目錄下新建myid 內容2
/home/ubuntu/zk/data3目錄下新建myid 內容3
啓動:zk/bin/zkServer.sh start zoo1.cfg
zk/bin/zkServer.sh start zoo2.cfg
zk/bin/zkServer.sh start zoo3.cfg
查看zk運行狀態:zkServer.sh status(單機) 或 zkServer.sh status zoo2.cfg (集羣)
leader 或 follwer
netstat -ano | more //查看裏面的端口2181、2182、2183是否啓動,代表zk啓動成功。
zk/bin$ ./zkCli.sh //連接到zk
connect locahost:2182 //連接2182
close //關閉連接
connect locahost:2181
ls / //查看跟元素
netstat -plut | more
=========zk僞分佈式搭建 end==============