引言
分佈式系統(distributed system)是建立在網絡之上的軟件系統。正是因為軟件的特性,所以分佈式系統具有高度的內聚性和透明性。因此,網絡和分佈式系統之間的區別更多的在於高層軟件(特別是操作系統),而不是硬件。內聚性是指每一個數據庫分佈節點高度自治,有本地的數據庫管理系統。透明性是指每一個數據庫分佈節點對用戶的應用來說都是透明的,看不出是本地還是遠程。在分佈式數據庫系統中,用戶感覺不到數據是分佈的,即用戶不須知道關係是否分割、有無副本、數據存於哪個站點以及事務在哪個站點上執行等。
hadoop
分成兩個
HDFS 文件系統
MapReduce 框架
HDFS分為
讀數據
NameNode 2個解決單點故障 類似數據路由
DataNode 3個
寫數據
文件拆分塊告訴NameNode,NameNode返回DataNodes,寫入DataNode的blocks中,在流水線複製自身機架一份,和另一個機架一份,最後跟新元數據到NameNode
HDFS特點
數據3分冗餘、硬件容錯
流式數據訪問 寫一次讀多次,沒法改,只能刪除在添加
存儲大文件 只能大文件
不支持多用戶併發寫相同文件
MySQL
MySQL是一個數據庫管理系統,也是一個關係數據庫。它是由Oracle支持的開源軟件。這意味著任何一個人都可以使用MySQL而不用支付一毛錢。 另外,如果需要,還可以更改其源代碼或進行二次開發以滿足您的需要
從集中式到分佈式
集中式的特點
所謂的集中式系統就是指由一臺或多臺主計算機組成中心節點,數據集中存儲於這個中心節點,並且整個系統的所有業務單元都部署在這個中心節點上,
系統的所有功能均由其集中處理。也就是說,在集中式系統中,每個終端或客戶端機器僅僅負責數據的錄入和輸出,而數據的存儲與控制處理完全
交由主機來完成。
最大的特點就是部署結構簡單。由於集中式系統往往基於底層性能卓越的大型主機,因此無須考慮如何對服務進行多個節點的部署,也就不用考慮多個
節點之間的分佈式協作問題。
三態
分佈式系統的每一次請求與響應,存在特有的“三態”概念,即成功、失敗與超時。超時的現象,通常有以下兩種情況:
由於網絡原因,請求並沒有被成功地發送到接收方,在發送過程就發生了消息丟失現象。
請求成功的被接收方接收後,並進行了處理,但是在將響應反饋給發送方的過程中,發生了消息丟失現象。(rabitMQ的解決方案是,消費者(接收方)開始處理消息前發送響應A,
消費者(接收方)處理完成消息後發送響應B,生產者(發送方)必須得到AB兩個響應才能確定消息成功被處理了)
從ACID到CAP/BASE
ACID
事務(Transaction)是由一系列對系統中數據進行訪問與更新的操作所組成的一個程序執行邏輯單元(Unit)。
原子性(Atomicity)
要麼全部成功執行,要麼全部不執行。
一致性(Consistency)
事務的運行被迫中斷時,這些未完成的事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處於不一致的狀態。
隔離性(Isolation)
併發的事務是相互隔離的,一個事務的執行不能被其他事務干擾。SQL規範定義了4個事務隔離級別:
讀未提交(Read Uncommitted):A事務更新過程中,從1更新到10,B事務能獲取過程中間值,獲取到2,3等值。(髒讀)
讀已提交(Read Committed):A事務更新過程中,從1更新到10,B事務只能獲取最終的值10。
可重複讀(Repeatable Read):A事務更新過程中,從1更新到10,B事務先獲取了1,後來B事務中有個操作重新獲取了一次值為10。(幻影讀)
串行化(Serializable):事務只能串行執行,不能併發。
持久性(Durability)
事務一旦提交,對數據庫對應數據的狀態變更就應該被永久保存下來。
hadoop完全分佈式集群搭建
以下操作只針對master主機服務器,其他主機服務器類似。
2.1 上傳hadoop包至 /opt/software目錄
2.2 解壓和拷貝hadoop至 /usr/local/hadoop
cd /opt/software
tar -zxvf hadoop-2.6.5.tar.gz
cp -r hadoop-2.6.5 /usr/local/hadoop
hadoop解壓和拷貝
hadoop解壓和拷貝完成
hadoop完全分佈式集群搭建
以下操作只針對master主機服務器,其他主機服務器類似。
2.1 上傳hadoop包至 /opt/software目錄
2.2 解壓和拷貝hadoop至 /usr/local/hadoop
cd /opt/software
tar -zxvf hadoop-2.6.5.tar.gz
cp -r hadoop-2.6.5 /usr/local/hadoop
hadoop解壓和拷貝
hadoop解壓和拷貝完成
三.hadoop完全分佈式集群配置
3.1 系統文件profile配置
配置系統環境變量
vi /etc/profile
#hadoop
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
系統環境配置
退出保存,重啟配置
source /etc/profile
3.2 hadoop-env.sh文件配置
cd /usr/local/hadoop/etc/hadoop
vi hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/jdk
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"
退出保存
hadoop-env.sh環境配置
3.3 新增namenode和datanode存放,臨時目錄tmp
定位:
cd /usr/local/hadoop
mkdir -p dfs/data
mkdir -p dfs/name
mkdir -p tmp
新建目錄
3.4 修改hdfs-site.xml文件
vi hdfs-site.xml
hdfs-site.xml文件
3.5 修改core-site.xml文件
vi core-site.xml
core-site.xml文件
3.6 修改mapred-site.xml文件
目錄默認只有mapred-site.xml.template文件,複製生成mapred-site.xml文件
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
mapred-site.xml文件
3.7 修改yarn-site.xml文件
vi yarn-site.xml
yarn-site.xml文件
3.8 修改slaves文件
vi slaves
slaves文件
3.9 slave01和slave02服務器修改
3.9.1 hadoop文件複製
複製master中hadoop文件到slave01和slave02服務器的/usr/local目錄
scp -r /usr/local/hadoop root@slave01:/usr/local/hadoop
scp -r /usr/local/hadoop root@slave012:/usr/local/hadoop
3.9.2 系統環境profile配置
類似3.2 分別在salve01和slave02配置系統環境
3.9.3 目錄文件新建
類似3.3 分別在slave01和slave02新建文件目錄
3.9.4 配置文件修改
修改core-site.xml文件
將fs.defaultFs對應的value中master修改slave02
core-site.xml文件
salve01修改類似。
集群配置與啟動
1]在管理節點上需要完成對於集群整體的配置配置:在/var/lib/mysql-cluster/config.ini中實現如下的配置信息:
]在數據節點中需要在my.cnf中完成對於數據節點的相關配置信息,如下:
需要指明配置的數據節點的根目錄,數據目錄,socket連接配置,用戶配置,以及對應的管理節點的ip地址配置;將配置完成的配置文件移動到/etc/my.cnf,完成;
3]在SQL節點上完成對於SQL節點的配置信息,同樣的是在my.cnf中完成相應配置信息,並將配置文件移動到/etc/my.cnf中,相應的配置信息的設定如下所示:
完成以上配置後,就可以啟動集群中的各個節點了。
總結
以上是對Java開發大型互聯網hadoop分佈式集群之MySQL分佈式集群搭建,分享給大家,希望大家可以瞭解什麼是JJava開發大型互聯網hadoop分佈式集群之MySQL分佈式集群搭建。覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持。(吹一波,233~~)這個是我Java內部資料分享交流群:469717771 驗證碼:頭條(06 必過)歡迎大家的加入!!!