第0次課 子節(jié)點(diǎn)設(shè)置和網(wǎng)絡(luò)設(shè)置
?在終端打開
(1)設(shè)置網(wǎng)絡(luò)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
IPADDR=192.168.183.150
NETMASK=255.255.255.0
GATEWAY=192.168.183.1
DNS1=192.168.183.1
按esc :wq
(2)設(shè)置主機(jī)名稱
vim /etc/sysconfig/network
(3)重新啟動(dòng)網(wǎng)絡(luò)
service network restart
(4)設(shè)置IP與主機(jī)名的映射關(guān)系
vim /etc/hosts
192.168.183.150 hadoop01
(5)配置主機(jī)的網(wǎng)絡(luò)
(6)用SecureCRT連接虛擬機(jī)
SSH2 連接到了192.168.183.150 這臺(tái)主機(jī)上
(7)關(guān)閉虛擬機(jī)的防火墻
在SecureCRT上 service iptables status
service iptables stop
#檢驗(yàn)防火墻狀態(tài) chkconfig iptables --list
#把防火墻的自動(dòng)啟動(dòng)關(guān)閉 chkconfig iptables off
(8)linux上安裝軟件的方法
yum install -y lrzsz
rz 是在上傳哪些文件
sz install.log 就把文件下載到了本地 我的下載里面
(9)下載jdk
mkdir /bigdata
cd /bigdata
#上傳jdk linux64位版本
ll
tar -zxvf jdk-8u151-linux-x64.tar.gz
#修改 jdk-8u151-linux-x64.tar.gz的屬組
chown -R root:root jdk1.8.0_151
(10)配置jdk的環(huán)境變量
#查看當(dāng)前jdk的版本和位置
rpm -qa|grep jdk
yum -y remove java-1.7.0-openjdk-1.7.0.79-2.5.5.4.el6.x86_64
yum -y remove java-1.6.0-openjdk-1.6.0.35-1.13.7.1.el6_6.x86_64
#先創(chuàng)制軟連接
ln -s /bigdata/jdk1.8.0_151 /usr/local/jdk
#配置環(huán)境變量
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:${JAVA_HOME}/bin
#重新編譯環(huán)境變量文件臣嚣,使其生效
source /etc/profile
java -version
(11)對(duì)克隆虛擬機(jī)的修改(克隆過(guò)程略)
#修改克隆虛擬機(jī)的硬件地址和IP
啟動(dòng)hadoop02
#查看當(dāng)前克隆的虛擬機(jī)的IP地址
vim /etc/sysconfig/network-scripts/ifcfg-eth0
把UUID刪除掉
把HWADDR刪除掉
把IPADDR改成 192.168.183.151
保存退出
vim /etc/udev/rules.d/70-persistent-net.rules
把hadoop01的 “eth0”那一行刪掉
把hadoop02的“eth1”那一行的“eth1”改成"eth0"
#修改克隆虛擬機(jī)的名稱
vim /etc/sysconfig/network
把hadoop01改成hadoop02
#修改IP和主機(jī)的映射關(guān)系
vim /etc/hosts
添加
192.168.183.151 hadoop02
保存退出
重啟hadooop02
在SECURE 02中先連接hadoop02 再查看主機(jī)名和IP地址
hostname
ifconfig
第1次課?大數(shù)據(jù)實(shí)戰(zhàn)第一課 hadoop生態(tài)圈與應(yīng)用實(shí)戰(zhàn)
1 大數(shù)據(jù)處理流程
第一步:數(shù)據(jù)采集
收集公開或隱私的數(shù)據(jù)翁潘,部署應(yīng)用程序,運(yùn)行日志
提取戒财、轉(zhuǎn)換症见、加載操作屬于ETL的過(guò)程
通常用Flume收集數(shù)據(jù)
第二步:數(shù)據(jù)存儲(chǔ):通過(guò)HDFS喂走,或者Kafka存儲(chǔ)通過(guò)日志收集的數(shù)據(jù)
第三步:把存儲(chǔ)資源和計(jì)算資源合理分配和利用,通過(guò)YARN來(lái)執(zhí)行
第四步:數(shù)據(jù)計(jì)算
通過(guò)批處理Mapreduce谋作,流處理SparkStreaming芋肠,交互式分析(SparkSQL)進(jìn)行數(shù)據(jù)的計(jì)算
第五步,數(shù)據(jù)分析
Hive遵蚜,SparkMLLib帖池,Druid
第六步,展示數(shù)據(jù)分析結(jié)果
Cboard吭净,Echart
2.分布式系統(tǒng)的特點(diǎn)與存在的問(wèn)題
并發(fā)性睡汹,同等,與并發(fā)性寂殉,缺乏全局時(shí)鐘
當(dāng)某個(gè)節(jié)點(diǎn)存在通訊異常時(shí)帮孔,不能執(zhí)行存儲(chǔ)任務(wù)或處理任務(wù),造成腦裂不撑,同時(shí)還存在超時(shí)文兢,請(qǐng)求失敗等問(wèn)題
3.分布式CAP定理
動(dòng)物園管理可以保證 分區(qū)容錯(cuò),可用性和數(shù)據(jù)的最終一致性焕檬。
Zookeeper不能保證兩個(gè)客戶端能同時(shí)得到更新的數(shù)據(jù)姆坚,如果想強(qiáng)制數(shù)據(jù)同步,需要在讀數(shù)據(jù)之前調(diào)用syne()接口來(lái)實(shí)現(xiàn)实愚。
Zookeeper更新一次數(shù)據(jù)要么成功兼呵,要么失敗。
4動(dòng)物園管理 機(jī)器節(jié)點(diǎn)數(shù)/2取整+1大于一半的節(jié)點(diǎn)數(shù)腊敲,仍然可以保證數(shù)據(jù)的可用性击喂。
4.1動(dòng)物園管理的架構(gòu),
領(lǐng)導(dǎo)者? 是從跟隨者節(jié)點(diǎn)選舉出來(lái)的碰辅,為客戶端提供讀寫服務(wù)和發(fā)起選舉懂昂;事務(wù)請(qǐng)求的唯一調(diào)度者和處理者。
學(xué)習(xí)者
跟隨者? 負(fù)責(zé)客戶端的讀請(qǐng)求服務(wù)没宾,如果接收到寫請(qǐng)求凌彬,就轉(zhuǎn)發(fā)給領(lǐng)導(dǎo)節(jié)點(diǎn)沸柔。
觀察者? 只負(fù)責(zé)領(lǐng)導(dǎo)者的的狀態(tài)同步,接收客戶端的讀請(qǐng)求铲敛,不參與選舉投票褐澎,提高系統(tǒng)讀的功能。如果觀察者掛掉了伐蒋,就從跟隨者中選舉一個(gè)結(jié)點(diǎn)
作為領(lǐng)導(dǎo)節(jié)點(diǎn)工三。
4.2 動(dòng)物園管理的數(shù)據(jù)寫入
遵循動(dòng)物園通過(guò)原子消息廣播實(shí)現(xiàn)數(shù)據(jù)一致性。
處理寫請(qǐng)求:
客戶端接收到寫請(qǐng)求先鱼,跟隨者把寫請(qǐng)求轉(zhuǎn)發(fā)給領(lǐng)導(dǎo)俭正,領(lǐng)導(dǎo)發(fā)起廣播事務(wù)提議,廣播告知所有的跟隨者型型。在廣播之前段审,為這個(gè)事務(wù)分配
一個(gè)全局的全蝶,單調(diào)遞增的全局ID(zxid)闹蒜,將這個(gè)zxid和事務(wù)體綁定在一起,組成消息體抑淫。
領(lǐng)導(dǎo)者把這個(gè)消息體為每個(gè)跟隨者創(chuàng)建一個(gè)隊(duì)列绷落。在每個(gè)隊(duì)列中放入應(yīng)該處理的消息。在發(fā)送消息的時(shí)候始苇,遵循先入先出的原則砌烁。先放入隊(duì)列的先被廣播出去,廣播給跟隨者催式。跟隨者接收到領(lǐng)導(dǎo)者的提議后函喉,以日志的形式寫入到本地磁盤,給領(lǐng)導(dǎo)者返回一個(gè)響應(yīng)荣月。
領(lǐng)導(dǎo)者接收到半數(shù)的相應(yīng)后管呵,就會(huì)廣播給所有的跟隨者:其他的跟隨者該提交事務(wù)了,它自身也會(huì)提交事務(wù)哺窄。當(dāng)跟隨者都提交事務(wù)后捐下,就會(huì)把客戶端發(fā)起寫的請(qǐng)求結(jié)果返回給客戶端。
處理讀請(qǐng)求:
客戶端連接到? 發(fā)起讀請(qǐng)求萌业,跟隨者返回結(jié)果坷襟;如果強(qiáng)制跟隨者和領(lǐng)導(dǎo)者數(shù)據(jù)同步,需要調(diào)用syne()接口生年。
4.3動(dòng)物園管理的選舉過(guò)程
LOOKING婴程,LEADING,F(xiàn)OLLOWING抱婉,OBSEREVER
事務(wù)ID是全局有序分配的排抬,負(fù)責(zé)節(jié)點(diǎn)的創(chuàng)建懂从,內(nèi)容更新和刪除
全新啟動(dòng)和運(yùn)行過(guò)程中的選舉過(guò)程
全新啟動(dòng)
每臺(tái)機(jī)器寫入一個(gè)機(jī)器號(hào)碼:ZK1,ZK2蹲蒲,ZK3(1-255之間的數(shù))
選舉過(guò)程中番甩,
ZK1,ZK2會(huì)發(fā)起消息:(機(jī)器號(hào)届搁,事務(wù)ID)缘薛,例如(1,0)作為一個(gè)消息體廣播出去。
兩臺(tái)機(jī)器的消息進(jìn)行對(duì)比卡睦。誰(shuí)的事務(wù)ID大宴胧,誰(shuí)當(dāng)領(lǐng)導(dǎo)者;其次對(duì)比機(jī)器號(hào)表锻,機(jī)器號(hào)大的作為領(lǐng)導(dǎo)者恕齐。
機(jī)器1更新自己的廣播消息
ZK2發(fā)現(xiàn)自己和ZK1都選了ZK2一票。
兩臺(tái)電腦更改狀態(tài)
ZK1 把looking更改為following瞬逊;
ZK2 把following更改為leading显歧。
ZK3發(fā)現(xiàn)系統(tǒng)中已經(jīng)有了領(lǐng)導(dǎo)者ZK2
那么它自己就沒有當(dāng)領(lǐng)導(dǎo)者的事務(wù)請(qǐng)求了。
運(yùn)行過(guò)程中的選舉過(guò)程
假設(shè)ZK2掛掉了确镊,在ZK1和ZK3中進(jìn)行選舉士骤,選取的過(guò)程同全新過(guò)程,先比較事務(wù)ID蕾域,再比較機(jī)器號(hào)拷肌,大的作為領(lǐng)導(dǎo)。
4.4 Zookeeper的數(shù)據(jù)模型
Zookeeper下提供了Znode的樹形結(jié)構(gòu)旨巷。Znode是數(shù)據(jù)節(jié)點(diǎn)巨缘,可以存數(shù)據(jù),構(gòu)造文件夾采呐,還可以創(chuàng)造子node
Znode
? ?持久節(jié)點(diǎn)
? 持久順序節(jié)點(diǎn)
? 臨時(shí)節(jié)點(diǎn)
? 臨時(shí)順序節(jié)點(diǎn)? 臨時(shí)會(huì)話生成的 當(dāng)會(huì)話失敗后若锁,會(huì)自動(dòng)刪除
4.4保證節(jié)點(diǎn)的數(shù)據(jù)不被修改
通過(guò)? 悲觀鎖(數(shù)據(jù)更新,競(jìng)爭(zhēng)十分激烈懈万,每一個(gè)數(shù)據(jù)運(yùn)行全程都需要加鎖) 樂(lè)觀鎖(在數(shù)據(jù)更新和提交之前拴清,是否有其他事務(wù)對(duì)它進(jìn)行了修改。數(shù)據(jù)沖突較少的場(chǎng)景:數(shù)據(jù)讀取会通,寫入校驗(yàn)口予,數(shù)據(jù)寫入)來(lái)實(shí)現(xiàn)
4.5? Znode的狀態(tài)
4.6 看護(hù)(Watcher)機(jī)制
包括Client,? Zookeeper集群涕侈, Watcher三個(gè)部分沪停。
客戶端向Zookeeper注冊(cè)監(jiān)聽事件,同時(shí)創(chuàng)建watcher對(duì)象,將watcher對(duì)象存儲(chǔ)在WatchManager中木张。WatchManager會(huì)第一時(shí)間通過(guò)回調(diào)函數(shù)處理這個(gè)事件众辨。
4.7統(tǒng)一命名服務(wù)
4.8配置管理
Znode的數(shù)據(jù)修改,監(jiān)聽的客戶端會(huì)第一時(shí)間更新自己的信息舷礼。
4.9集群管理
通過(guò)動(dòng)物園管理感知到節(jié)點(diǎn)的掛掉鹃彻,就讓給節(jié)點(diǎn)下線;也會(huì)感知到新的節(jié)點(diǎn)上線妻献,并讓其作為新的集群的節(jié)點(diǎn)蛛株。