分布式系统(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 [email protected]:/usr/local/hadoop
scp -r /usr/local/hadoop [email protected]:/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中,相应的配置信息的设定如下所示:
完成以上配置后,就可以启动集群中的各个节点了。
总结
以 上就是我对这篇文章及其优化总结,分享给大家,希望大家有所收获,觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持!
1、多写多敲代码,好的代码与扎实的基础知识一定是实践出来的
2、可以去百度搜索腾讯课堂图灵学院的视频来学习一下java架构实战案例,还挺不错的。
最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步!都能赢取白富美,走向架构师的人生巅峰!
3丶想了解学习以上课程内容可加群:722040762 验证码:博客(06 必过)欢迎大家的加入哟!