赞
踩
搭建成功后各节点分工如下所示:
NameNode | SecondaryNameNode | DateNode | Zookeeper | ZKFailoverController | JournalNode | ResourceManager | NodeManager | MySQL | Hive | HMaster | HRegionServer | Redis | ElasticSearch | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
node01 | * | * | * | * | * | * | * | |||||||
node02 | * | * | * | * | * | * | * | * | * | |||||
node03 | * | * | * | * | * | * | * | * | ||||||
node04 | * | * | * | * | * | * | * |
检查防火墙状态,如果Active状态为active (running),则防火墙为开启状态。
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
启动防火墙
systemctl start firewalld
设置开机禁用防火墙
systemctl disable firewalld.service
设置开机启用防火墙
systemctl enable firewalld.service
(1)node01、node02、node03、node04分别执行以下命令,生成dsa。
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
cd .ssh
(2)分别分发密钥,本文只展示node01分发node02的命令,命令如下:
node01执行以下命令,分发密钥。
scp id_dsa.pub node02:`pwd`/node01.pub
node02执行以下命令
cat ~/.ssh/node01.pub >> ~/.ssh/authorized_keys
node01执行以下命令,验证免秘钥配置是否成功,如果成功,则不需要密码即可访问node02。
ssh node02
node01、node02、node03、node04间分别执行上述命令,分发并配置密钥,实现所有节点之间可以在不使用密码的情况下互相访问。
进入C:\Windows\System32\drivers\etc目录,编辑hosts文件
在末尾添加如下配置:
192.168.153.11 node01
192.168.153.12 node02
192.168.153.13 node03
192.168.153.14 node04
添加后web端输入的IP地址即可被主机名代替。
解压JDK安装包
cd /opt/software
rpm -i jdk-7u67-linux-x64.rpm
编写环境变量
whereis java
vi + /etc/profile
环境变量中添加:
# JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
重新加载环境变量。
. /etc/profile
Hadoop全分布式配合Zookeeper与Yarn集群实现高可用性(HA,high availability),集群各节点角色分配如下:
NameNode | SecondaryNameNode | DateNode | Zookeeper | ZKFailoverController | JournalNode | ResourceManager | NodeManager | |
---|---|---|---|---|---|---|---|---|
node01 | * | * | * | |||||
node02 | * | * | * | * | * | * | ||
node03 | * | * | * | * | * | |||
node04 | * | * | * | * |
各个角色的作用如下:
所属组件 | 作用 | |
---|---|---|
NameNode | HDFS | 维护和管理文件系统元数据 |
SecondaryNameNode | HDFS | 帮助NameNode备份数据 |
DateNode | HDFS | 负责具体的数据块存储 |
Zookeeper | Zookeeper | ZKFailoverController启动所依赖的环境 |
ZKFailoverController | Zookeeper | ZooKeeper故障转移控制器,通过监视和控制Active NameNode与Standby NameNode之间的状态实现NameNode的主备切换 |
JournalNode | Yarn | 负责监控日志并通过日志保持Active NameNode与Standby NameNode之间元数据同步 |
ResourceManager | Yarn | 资源调度过程中监控 NodeManager的健康状况并分配与调度资源 |
NodeManager | Yarn | 资源调度过程中管理单个节点上的资源 |
前期准备:配置IP、MAC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量
在node01节点中先搭建伪分布式
安装版本:hadoop-2.6.5.tar.gz
tar xf hadoop-2.6.5.tar.gz -C /opt/module
vi + /etc/profile
在环境变量中添加如下:
# HADOOP_HOME
HADOOP_HOME=/opt/module/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
更新更改的配置
source /etc/profile
进入Hadoop配置文件目录
cd /opt/module/hadoop-2.6.5/etc/hadoop
Hadoop的第二次JAVA_HOME 环境变量配置
分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中添加JDK的环境变量
vi hadoop-env.sh
vi mapred-env.sh
vi yarn-env.sh
修改三个配置文件中间的JAVA_HOME设置
export JAVA_HOME=/usr/java/jdk1.7.0_67
配置core-site.xml
vi core-site.xml
在core-site.xml中添加如下配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/module/hadoop/pseudo</value>
</property>
</configuration>
配置hdfs-site.xml
vi hdfs-site.xml
在hdfs-site.xml中添加如下配置:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node01:50090</value>
</property>
</configuration>
配置slaves:
vi slaves
在slaves中添加:
node01
格式化hdfs(只能格式化一次,再次启动集群不要执行)
hdfs namenode -format
启动集群
start-dfs.sh
角色进程查看
jps
帮助命令:
hdfs
hdfs dfs
查看web UI
地址为http://node01:50070与http://192.168.153.11:50070。
如果之前未配置Windows10的地址映射,则地址只能为http://192.168.153.11:50070
创建目录:
hdfs dfs -mkdir -p /user/root
查看目录:
hdfs dfs -ls /
上传文件:
hdfs dfs -put hadoop-2.6.5.tar.gz /user/root
停止集群:
stop-dfs.sh
事先准备:先将单节点的hadoop配置文件复制并保存到hadoop_pseudo文件夹备份:
cd /opt/module/hadoop-2.6.5/etc/
cp -r hadoop hadoop_pseudo
更改配置core-site.xml
cd /opt/module/hadoop-2.6.5/etc/hadoop/
vi core-site.xml
将core-site.xml改为如下格式
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/module/hadoop/full</value>
</property>
更改配置hdfs-site.xml
vi hdfs-site.xml
将hdfs-site.xml改为如下格式
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value>
</property>
更改配置slaves:
vi slaves
将slaves改为如下内容
node02
node03
node04
分发 hadoop-2.6.5 给其他节点
cd /opt/module/
scp -r hadoop-2.6.5 node02:`pwd`
scp -r hadoop-2.6.5 node03:`pwd`
scp -r hadoop-2.6.5 node04:`pwd`
分发环境变量配置文件给其他节点
scp /etc/profile node02:/etc/
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
. /etc/profile
格式化(只能格式化一次)
hdfs namenode -format
启动Hadoop集群
start-dfs.sh
完成简单的创建目录以及上传文件操作
hdfs dfs -mkdir -p /user/root
for i in `seq 100000`;do echo "hello world $i" >> test.txt;done
hdfs dfs -D dfs.blocksize=1048576 -put test.txt
登录web界面 http://node01:50070
前期准备:将全分布式的hadoop配置文件备份到hadoop_full文件夹中
cd /opt/module/hadoop-2.6.5/etc/
cp -r hadoop hadoop_full
配置core-site.xml
cd /opt/module/hadoop-2.6.5/etc/hadoop/
vi core-site.xml
在core-site.xml文件中,更改原有配置
<property>
<name>fs.defaultFS</name>
<value>hdfs://mycluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/var/module/hadoop/ha</value>
</property>
更改后,在core-site.xml文件中,增加如下
<property>
<name>ha.zookeeper.quorum</name>
<value>node02:2181,node03:2181,node04:2181</value>
</property>
配置hdfs-site.xml
vi hdfs-site.xml
去掉原有的SNN配置
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node02:50090</value>
</property>
增加如下配置
<property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>node01:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>node02:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node01:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>node02:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_dsa</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/var/module/hadoop/ha/journalnode</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property>
更改后的hdfs-site.xml如下:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>node01:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>node02:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node01:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>node02:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value> </property> <property> <name>dfs.client.failover.proxy.provider.mycluster</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/var/module/hadoop/ha/journalnode</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> </configuration>
分发core-site.xml hdfs-site.xml 给其他节点
scp core-site.xml hdfs-site.xml node02:`pwd`
scp core-site.xml hdfs-site.xml node03:`pwd`
scp core-site.xml hdfs-site.xml node04:`pwd`
1.zk压缩包解压在其他路径下(node02):
tar xf zookeeper-3.4.6.tar.gz -C /opt/module/
2.进入conf目录,拷贝zoo_sample.cfg zoo.cfg 并配置dataDir,集群节点(node02)
cd /opt/module/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
在文件中间修改:
dataDir=/var/module/zk
在文件末尾添加:
server.1=node02:2888:3888
server.2=node03:2888:3888
server.3=node04:2888:3888
3.(node02)分发zookeeper到node03、node04
cd /opt/module/
scp -r zookeeper-3.4.6/ node03:`pwd`
scp -r zookeeper-3.4.6/ node04:`pwd`
4.创建 /var/module/zk目录,进入各自目录 分别输出1,2,3 至文件 myid(node02、node03、node04)
node02、node03、node04先创建需要的zk文件夹
mkdir /var/module/zk
node02进行如下配置,将node02的myid设置为1
echo 1 > /var/module/zk/myid
node03进行如下配置,将node03的myid设置为2
echo 2 > /var/module/zk/myid
node04进行如下配置,将node04的myid设置为3
echo 3 > /var/module/zk/myid
node02、node03、node04检查myid是否配置正确
cat /var/module/zk/myid
5.各节点配置环境变量,读取profile
vi + /etc/profile
在环境变量中添加:
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
分发到node03和node04中(也可以单独在node03、node04中配置环境变量)
scp /etc/profile node03:/etc/
scp /etc/profile node04:/etc/
更新配置文件
source /etc/profile
zkServer.sh start
zkServer.sh status
zkServer.sh stop
node02、node03、node04节点启动journalnode集群
hadoop-daemon.sh start journalnode
随意找一个nn节点格式化(node01):
hdfs namenode -format
启动该节点(node01):
hadoop-daemon.sh start namenode
另一nn节点同步(node02):
hdfs namenode -bootstrapStandby
格式化zkfc,在zookeeper中可见目录创建(node01):
hdfs zkfc -formatZK
NN1 | NN2 | DN | ZK | ZKFC | JNN | RS | NM | |
---|---|---|---|---|---|---|---|---|
node01 | * | * | * | |||||
node02 | * | * | * | * | * | * | ||
node03 | * | * | * | * | * | |||
node04 | * | * | * | * |
进入配置文件目录并更改文件名称
cd /opt/module/hadoop-2.6.5/etc/hadoop
mv mapred-site.xml.template mapred-site.xml
配置mapred-site.xml
vi mapred-site.xml
在mapred-site.xml中增加如下配置:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置yarn-site.xml:
vi yarn-site.xml
在yarn-site.xml中增加如下配置:
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>cluster1</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node03</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node04</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>node02:2181,node03:2181,node04:2181</value> </property>
分发两个文件到:node02、node03、node04节点
scp mapred-site.xml yarn-site.xml node02:`pwd`
scp mapred-site.xml yarn-site.xml node03:`pwd`
scp mapred-site.xml yarn-site.xml node04:`pwd`
1.node02、node03、node04分别启动Zookeeper:
zkServer.sh start
2.hdfs (注意,有一个脚本不要用,start-all)
start-dfs.sh
如果nn 和 nn2没有启动,需要在node01、node02分别手动启动:
hadoop-daemon.sh start namenode
3.启动nodemanager:
start-yarn.sh
4.在node03、node04节点分别执行脚本:
yarn-daemon.sh start resourcemanager
Hadoop UI(node01)访问地址:
http://node01:50070
http://192.168.153.11:50070
Hadoop UI(node02)访问地址:
http://node02:50070
http://192.168.153.12:50070
yarnUI访问地址:
http://node03:8088
http://192.168.153.13:8088
node01: (停止nodemanager)
stop-dfs.sh
stop-yarn.sh
node03、node04:(停止resourcemanager)
yarn-daemon.sh stop resourcemanager
以后每次启动集群,只需要执行以下命令
node02、node03、node04:
zkServer.sh start
node01:
start-all.sh
node03、node04:
yarn-daemon.sh start resourcemanager
前置条件:配置IP、MAC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量,测试安装Hadoop全分布式
Hive依赖于上一章搭建的高可用分布式系统与MySQL数据库。
NameNode | SecondaryNameNode | DateNode | Zookeeper | ZKFailoverController | JournalNode | ResourceManager | NodeManager | MySQL | Hive | |
---|---|---|---|---|---|---|---|---|---|---|
node01 | * | * | * | * | ||||||
node02 | * | * | * | * | * | * | * | |||
node03 | * | * | * | * | * | * | ||||
node04 | * | * | * | * | * |
在搭建的Hive环境中,各节点的作用如下:
作用 | |
---|---|
node01 | 安装MySQL,作为Hive启动必备条件 |
node02 | 搭建单节点Hive |
node03 | 搭建多节点Hive,作为Hive的服务端 |
node04 | 搭建多节点Hive,作为Hive的客户端 |
node01中配置MySQL
yum install mysql-server
如果提示“No package mysql-server available.”(找不到软件包),执行如下命令
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
启动 MySQL服务
systemctl start mysqld
查看 MySQL 运行状态:
systemctl status mysqld
进入数据库
mysql
数据库中执行以下命令设置密码(密码设置为“121314”,可根据习惯修改):
use mysql;
grant all privileges on *.* to 'root'@'%' identified by '121314' with grant option;
select host,user,password from user;
update user set password=password('121314') where user='root' and host='localhost';
flush privileges;
quit
修改密码后进入MySQL的命令变为:
mysql -u root -p
然后再PassWord后面输入设置的密码“121314”。
单用户模式,node02单节点配置Hive,与node01的MySQL相连接
在node02上解压安装Hive
cd /opt/software
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
cd /opt/module/
mv apache-hive-1.2.1-bin hive
在node02节点中配置环境变量。
vi + /etc/profile
进行如下更改
#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
更新环境变量
source /etc/profile
在node02节点中修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。
cd /opt/module/hadoop-2.6.5/share/hadoop/yarn/lib/
rm -rf jline-0.9.94.jar
cp /opt/module/hive/lib/jline-2.12.jar ./
在node02节点中拷贝MySQL驱动包到HIVE_HOME\lib目录下
cd /opt/software
cp mysql-connector-java-5.1.32-bin.jar /opt/module/hive/lib/
在node02节点中修改hive-site.xml
cd /opt/module/hive/conf
mv hive-default.xml.template hive-site.xml
vi hive-site.xml
在node02节点中批量删除hive-site.xml原有的配置:在末行命令行输入: .,$-1d;并增加如下配置
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive_remote/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node01/hive_remote?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>121314</value> </property>
启动条件:先在node02、node03、node04启动Zookeeper集群,并在node01启动Hadoop集群,最后在node03、node04启动Yarn。
node02、node03、node04:
zkServer.sh start
node01:
start-all.sh
node03、node04:
yarn-daemon.sh start resourcemanager
node02单节点启动Hive(记得先启动Hadoop集群)
hive
node02进行Hive的基本操作:
show tables;
create table tbl(id int,age int);
show tables;
insert into tbl values(1,1);
select * from tbl;
quit;
在node01:50070的webUI页面中的Browse Directory输入路径/user/hive_remote/warehouse/tbl可以看到Hive中存入的表。
node01中进入数据库可以看到hive存到数据库中的表:
mysql -uroot -p
show databases;
use hive_remote;
show tables;
select * from TBLS;
quit;
多用户模式Remote分开,node03是服务端,node04是客户端
将node02中的单节点hive分发到node03、node04
scp -r hive/ node03:`pwd`
scp -r hive/ node04:`pwd`
node03、node04配置环境变量:
vi /etc/profile
#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
. /etc/profile
node03(服务端)更改hive.site.xml配置文件
cd /opt/module/hive/conf/
vi hive-site.xml
前两项的value改变,“hive_romate"改为"hive”
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node01/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>121314</value> </property>
1.node04(客户端)更改hive.site.xml配置文件
cd /opt/module/hive/conf/
vi hive-site.xml
2.更改hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node03:9083</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
3.修改HADOOP_HOME\lib目录下的jline-*.jar 变成HIVE_HOME\lib下的jline-2.12.jar。
cd /opt/module/hadoop-2.6.5/share/hadoop/yarn/lib/
rm -rf jline-0.9.94.jar
cp /opt/module/hive/lib/jline-2.12.jar ./
node03服务端元数据启动(阻塞式窗口)
hive --service metastore
node04客户端启动
hive
在node04的hive客户端里进行简单的操作
create table psn(id int);
show tables;
insert into psn values(1);
可以在node01的MySQL中查找hive库中的psn表
可以在http://node01:50070的web页面中进入/user/hive/warehouse/psn查找表文件
hiveserver2
方式一:
beeline
(连接成功后node03的hiveserver2会弹出ok)
!connect jdbc:hive2://node03:10000/default root 121314
退出beeline连接
!close
!quit
方式二:
beeline -u jdbc:hive2://node03:10000/default root 121314
show tables ;
退出连接
!quit
HBase依赖于Hadoop高可用分布式系统。集群各节点角色分配如下
NameNode | SecondaryNameNode | DateNode | Zookeeper | ZKFailoverController | JournalNode | ResourceManager | NodeManager | MySQL | Hive | HMaster | HRegionServer | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
node01 | * | * | * | * | * | |||||||
node02 | * | * | * | * | * | * | * | * | ||||
node03 | * | * | * | * | * | * | * | |||||
node04 | * | * | * | * | * | * | * |
除去搭建完成的Hadoop高可用系统,本部分需要搭建的角色配置如下:
HMaster | HRegionServer | |
---|---|---|
node01 | * | |
node02 | * | |
node03 | * | |
node04 | * | * |
其中HMaster与HRegionServer的配置如下:
各个角色的作用如下:
所属组件 | 作用 | |
---|---|---|
HMaster | HBase | 负责监控集群中所有的HRegionServer实例 |
HRegionServer | HBase | 负责数据cell的处理,是拆分合并region的实际执行者 |
在node01节点中搭建
安装(node01单节点)
cd /opt/software
tar -zxvf hbase-0.98.12.1-hadoop2-bin.tar.gz -C /opt/module/
cd /opt/module
mv hbase-0.98.12.1-hadoop2 hbase
环境变量
vi /etc/profile
环境变量中做如下修改
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
保存并更新环境变量
source /etc/profile
1.修改hbase-env.sh
cd /opt/module/hbase/conf
vi hbase-env.sh
更改hbase-env.sh的JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.7.0_67
2.修改hbase-site.xml
vi hbase-site.xml
进行如下配置:
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
1.启动HBASE
start-hbase.sh
2.进入web端:node01:60010
3.进入hbase命令行:
hbase shell
4.HBase基本操作:
status
version
whoami
create 'tbl','cf'
list
put 'tbl','2','cf:name','zhangsanfeng'
get 'tbl','2'
scan 'tbl'
flush 'tbl'
quit
node01主,node04从
在node01中配置,后续分发到node02、node03、node04
1.修改hbase-env.sh
vi hbase-env.sh
更改JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.7.0_67
更改HBASE_MANAGES_ZK(第124行)
export HBASE_MANAGES_ZK=false
2.修改hbase-site.xml
vi hbase-site.xml
删除原来的伪分布式配置
<property>
<name>hbase.rootdir</name>
<value>hdfs://mycluster/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node02,node03,node04</value>
</property>
3.修改regionservers
vi regionservers
更改为:
node02
node03
node04
4.创建backup-masters(以node01为启动节点,所以该文件中配置node04)
vi backup-masters
添加以下配置
node04
5、拷贝hdfs-site.xml到conf目录
cp /opt/module/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./
将hbase分发到其他节点(node02、node03、node04)
scp -r /opt/module/hbase node02:/opt/module/
scp -r /opt/module/hbase node03:/opt/module/
scp -r /opt/module/hbase node04:/opt/module/
其他节点修改环境变量(node02、node03、node04)
vi + /etc/profile
# HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin
启动条件:先在node02、node03、node04启动Zookeeper集群,并在node01启动Hadoop集群,最后在node03、node04启动Yarn。
node02、node03、node04:
zkServer.sh start
node01:
start-all.sh
node03、node04:
yarn-daemon.sh start resourcemanager
在node01启动HBase:
start-hbase.sh
进入node01与node04的web端:
http://node01:60010
http://node04:60010
进入HBase命令行:
hbase shell
关闭HBase:
stop-hbase.sh
安装版本 redis-2.8.18.tar.gz
1.下载gcc、tcl 命令编译器
yum -y install gcc tcl
whereis gcc tcl
2.解压
cd /opt/software/
tar xf redis-2.8.18.tar.gz -C /opt/module/
3.编译、创建目录、拷贝
cd /opt/module/redis-2.8.18/
make && make PREFIX=/opt/module/redis install
4.配置环境变量:
vi + /etc/profile
# REDIS_HOME
export REDIS_HOME=/opt/module/redis
export PATH=$PATH:$REDIS_HOME/bin
5.重新加载配置文件:
. /etc/profile
6.进入utils 目录,安装服务脚本:
cd /opt/module/redis-2.8.18/utils
./install_server.sh
端口、实例、配置文件、日志、持久化数据目录、执行路径配置
enter执行 、ctrl+c退出
7.启动客户端:
redis-cli
8.使用帮助:
utils目录下:
redis-cli -h
redis-server -h
9.启动客户端:
redis -cli (6379)
帮助: 直接输入 help
进入opt目录下
cd /opt
1.创建redis目录:
mkdir redis
2.在redis目录下分别创建3个端口目录: 6380,6381,6382
(不在配置文件中写他的目录指定关系,直接在当前目录下执行,持久化目录)
cd redis/
mkdir 6380
mkdir 6381
mkdir 6382
3.当前目录下分别启动3个实例:
(1)启动服务端。在node01中新建三个终端,分别进入/opt/redis/6380、/opt/redis/6381以及/opt/redis/6382目录,并且执行以下命令:
进入6380的终端执行:
cd /opt/redis/6380
redis-server --port 6380
进入6381的终端执行:
cd /opt/redis/6381
redis-server --port 6381 --slaveof 127.0.0.1 6380
进入6382的终端执行:
cd /opt/redis/6382
redis-server --port 6382 --slaveof 127.0.0.1 6380
(2)在node01中新建三个终端作为三个客户端,分别执行以下命令:
redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382
4.主从演示 crud权限,高可用
1.拷贝src下的redis-sentinel至bin目录下:
cd /opt/module/redis-2.8.18/src/
cp redis-sentinel /opt/module/redis/bin/
2.创建哨兵配置文件目录:
cd /opt
mkdir sent
3.目录下创建启动配置文件病拷贝:
cd /opt/sent/
vi s1.conf
配置文件内容:
port 26380
sentinel monitor mymaster 127.0.0.1 6380 2
拷贝
cp s1.conf s2.conf
cp s1.conf s3.conf
分别对拷贝的s2.conf、s3.conf进行更改
s2.conf:
vi s2.conf
s2.conf更改为:
port 26381
sentinel monitor mymaster 127.0.0.1 6380 2
s3.conf:
vi s3.conf
s3.conf更改为:
port 26382
sentinel monitor mymaster 127.0.0.1 6380 2
4 启动Redis伪分布式哨兵集群
需要在node01中启动九个终端,包括三个服务端、三个客户端以及三个哨兵。
(1)启动服务端
启动三个主从redis实例,在node01中新建三个终端,分别进入/opt/redis/6380、/opt/redis/6381、/opt/redis/6382目录,并且执行以下命令:
进入6380的终端执行:
cd /opt/redis/6380
redis-server --port 6380
进入6381的终端执行:
cd /opt/redis/6381
redis-server --port 6381 --slaveof 127.0.0.1 6380
进入6382的终端执行:
cd /opt/redis/6382
redis-server --port 6382 --slaveof 127.0.0.1 6380
(2)启动哨兵
启动sentinel读取配置文件,在node01中新建三个终端并进入/opt/sent/目录,三个终端分别执行以下命令:
三个终端统一执行:
cd /opt/sent/
三个终端分别执行以下三个命令中的一个:
redis-sentinel s1.conf
redis-sentinel s2.conf
redis-sentinel s3.conf
(3)启动客户端。
测试:演示自动提备
在node01中新建三个终端,分别执行以下命令:
redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382
挂断主节点,哨兵会自动寻找新的节点
全分布式redis集群搭建:单节点多实例
删除之前安装的2.8版本并安装3.0版本
1 删除2.8版本bin目录及文件:
cd /opt/module/
rm -rf redis-2.8.18/
cd /opt/module/redis
rm -rf /opt/module/redis/bin/
2 Xftp 上传redis-cluster 目录到根目录
3 redis-cluster目录下解压redis 3.0 :
cd /opt/software/redis-cluster/
tar xf redis-3.0.4.tar.gz
4 redis目录下make命令编译拷贝bin至 /opt/module/redis/下
cd /opt/software/redis-cluster/redis-3.0.4
make && make PREFIX=/opt/module/redis install
成功后会有哨兵显示
5 测试 是否成功
输入re后按table键看是有提示
6 安装rubby编译环境
yum -y install ruby rubygems
7 redis-cluster 目录下安装 redis gem 模块:
cd /opt/software/redis-cluster/
gem install --local redis-3.3.0.gem
8 创建文件目录、主从节点并匹配端口(已完成):
redis集群 3.x版本
物理节点1个
指定3个主节点端口为7000、7001、7002
对应的3个从节点端口为7003、7004、7005
mkdir cluster-test
cd cluster-test
mkdir 7000 7001 7002 7003 7004 7005
9 创建配置文件redis.conf(启集群模式: 3.0 支持单机集群,但必须在配置文件中说明) (已完成)
指定不冲突的端口 及 <对应端口号>
文件内容:
声明支持集群模式
指定端口
在7000-7005每个目录中均放入redis.conf
redis.conf内容如下:
cluster-enabled yes
port 700X
10 启动所有服务,要进入子目录启动服务
开启6个终端,分别进入7000到7005目录。执行启动命令redis-server redis.conf
cd /opt/software/redis-cluster/redis-test/7000
cd /opt/software/redis-cluster/redis-test/7001
cd /opt/software/redis-cluster/redis-test/7002
cd /opt/software/redis-cluster/redis-test/7003
cd /opt/software/redis-cluster/redis-test/7004
cd /opt/software/redis-cluster/redis-test/7005
6个终端同时执行以下命令,启动Redis:
redis-server redis.conf
ss -tanl | grep 700
11 创建集群,槽位认领
新建一个终端,在安装目录下的src中,找到 redis-trib.rb 这是rubby脚本执行程序,完成redis3.0集群创建
cd /opt/software/redis-cluster/redis-3.0.4/src
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 \127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
Using 3 masters: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 Adding replica 127.0.0.1:7003 to 127.0.0.1:7000 Adding replica 127.0.0.1:7004 to 127.0.0.1:7001 Adding replica 127.0.0.1:7005 to 127.0.0.1:7002 >>> Performing Cluster Check (using node 127.0.0.1:7000) M: d4cbae0d69b87a3ca2f9912c8618c2e69b4d8fab 127.0.0.1:7000 slots:0-5460 (5461 slots) master M: bc2e33db0c4f6a9065792ea63e0e9b01eda283d7 127.0.0.1:7001 slots:5461-10922 (5462 slots) master M: 5c2217a47e03331752fdf89491e253fe411a21e1 127.0.0.1:7002 slots:10923-16383 (5461 slots) master M: 3d4b31af7ae60e87eef964a0641d43a39665f8fc 127.0.0.1:7003 slots: (0 slots) master replicates d4cbae0d69b87a3ca2f9912c8618c2e69b4d8fab M: 710ba3c9b3bda175f55987eb69c1c1002d28de42 127.0.0.1:7004 slots: (0 slots) master replicates bc2e33db0c4f6a9065792ea63e0e9b01eda283d7 M: 7e723cbd01ef5a4447539a5af7b4c5461bf013df 127.0.0.1:7005 slots: (0 slots) master replicates 5c2217a47e03331752fdf89491e253fe411a21e1
自动分配了主从,自动分配了slots,所有槽都有节点处理,集群上线
客户端连接
新建三个端口,输入以下命令连接
redis-cli -p 7000 -c
redis-cli -p 7001 -c
redis-cli -p 7002 -c
在7000输入set k1 a 跳转到7002
在7001输入get k1 跳转到7002
在7002输入get k1 不跳转
本章节与node01、node02、node03三个节点安装ElasticSearch并搭建集群,同时安装head可视化插件。
注意:ElasticSearch具有特殊性,不能使用root用户运行,所以创建一个es普通用户。安装ElasticSearch时直接切换到es用户安装,相比于用root安装,省去了转权限的步骤。
xftp拷贝elasticsearch-2.2.1.zip至software目录下
node01、node02、node03共同安装
1.安装unzip
yum -y install unzip
2.共享模式下创建es用户:(node01、node02、node03)
useradd es
为es用户添加密码
passwd es
密码设置为:
123456
3.root 用户创建 /opt/module/es(普通用户无法创建)(node01、node02、node03)(注意:此时的目录权限属于root)
mkdir -p /opt/module/es
在module目录下执行下面命令赋予权限(node01、node02、node03)
cd /opt/module/
chown es:es es
切换用户es(node01、node02、node03)
su es
4.使用es用户解压elasticsearch-2.2.1.zip包至es目录,保证es文件属于用户es:
cd /opt/software
unzip elasticsearch-2.2.1.zip -d /opt/module/es
5.进入es/conf, 修改elasticsearch.yml配置文件:
cd /opt/module/es/elasticsearch-2.2.1/config/
vi elasticsearch.yml
修改elasticsearch.yml配置文件的cluster:
# elasticsearch集群名字
cluster.name: my-application
修改elasticsearch.yml配置文件的node(分发文件后记得修改node):
node.name: node01
修改elasticsearch.yml配置文件的network(分发文件后记得修改network):
network.host: 192.168.153.11
http.port: 9200
末尾增加防脑裂:
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.153.11","192.168.153.12", "192.168.153.13"]
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s
6.将提供的plugins文件夹通过Xftp工具传输到 /opt/module/es/elasticsearch-2.2.1/中
7.切换至root用户把plugins文件夹的权限给es用户(可以不做)
su root
cd /opt/module/es/elasticsearch-2.2.1/
chown es:es -R plugins/
su es
8.分发其他节点(用es角色分发):
cd /opt/module/es
scp -r elasticsearch-2.2.1/ es@node02:/opt/module/es/
scp -r elasticsearch-2.2.1/ es@node03:/opt/module/es/
9.分别修改配置文件的主机名和IP地址
cd /opt/module/es/elasticsearch-2.2.1/config/
vi elasticsearch.yml
分别将node02和node03的elasticsearch.yml中主机名和IP地址修改成自己的。
10.进入bin目录,启动脚本:
cd /opt/module/es/elasticsearch-2.2.1/bin/
./elasticsearch
11.测试插件效果
http://node01:9200/_plugin/head
http://192.168.153.11:9200/_plugin/head?pretty
至此Hadoop生态系统环境已经搭建完毕,首先搭建Hadoop分布式系统并通过Zookeeper集群与Yarn集群实现系统的高可用性,其次安装MySQL并搭建Hive的多节点集群,然后安装HBase数据库并搭建HBase的集群,最后分别安装哨兵模式的Redis集群和ElasticSearch集群。
集群启动步骤如下:
node02、node03、node04启动Zookeeper:
zkServer.sh start
node01启动Hadoop:
start-all.sh
node03、node04启动Yarn:
yarn-daemon.sh start resourcemanager
node01启动HBase集群
start-hbase.sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。