- 集群资源配置说明
 
一、集群基本配置
1.IP分配
/etc/hostname. /etc/hosts 192.168.0.130 sa0 192.168.0.131 sa1 192.168.0.132 sa2 192.168.0.133 sa3 192.168.0.134 sa4 192.168.0.135 sa5
2.免密码登录
>生产公钥ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa>发送公钥ssh-copy-id sa0
3.关闭防火墙
- systemctl disable firewalld
 - systemctl stop firewalld
 - service firewalld stop
 
二 、配置批量分发指令和分发文件
1.xcall.sh
实现向集群中发送指令
#!/bin/bashparams=$@i=0for(( i = 0 ; i <= 5 ; i = $i + 1 )); doecho ======== sa$i $params ===========ssh sa$i $params- 
2.xrsycn.sh
实现发送文件的功能
 #!/bin/bashif [[ $# -lt 1 ]] ; then echo no params ; exit ; fip=$1echo p=$pdir=dirname $p``filename=basename $p``cd $dirfullpath=pwd -P .``user=whoami``for (( i = 0 ; i <= 5 ; i = $i + 1 )) ; doecho ========== sa$i ==========rsync -lr $p ${user}@sa$i:$fullpathdone;三、zookeeper搭建
解析tar包
tar -zxvf zookeeper-3.4.9.tar.gz -C /soft/
设置环境变量
打开/etc/profile文件,在文件最后添加一下内容
export ZK_HOME=/soft/zkexport PATH=$PATH:$ZK_HOME/bin
环境变量生效
source /etc/profile
修改配置文件名称
cp zoo_sample.cfg zoo.cfg
zk 配置单机模式
打开配置文件zoo.cfg
dataDir=/home/centos01/zookeeper # zookeeper缓存目录
启动zk
zkServer.sh start
客户端连接
zkCli.sh -server localhost:2181
zk集群
sa0,sa1,sa2 #三台机器dataDir=/home/centos01/zookeeper # zookeeper缓存目录server.1=sa0:2888:3888 # 2888 服务器之间通信接口server.2=sa1:2888:3888 # 3888 leader选举接口- 
创建myid
 在/home/centos01/zookeeper目录下创建myid(0)-->标示集群的唯一属性1.shell server.X X指服务器的代号zookeeper的启动过程:
zkServer.sh start$>netstat -anop | grep 2181
四、kafka 集群搭建
解压tar包
tar -zxvf kafka_2.12-2.2.2.tgz -C /soft/
设置环境变量
export KAFKA_HOME=/soft/kafkaexport PATH=$PATH:$KAFKA_HOME/bin
环境变量生效
source /etc/profile
修改配置文件server.properties
vi server.propertiebroker.id=0 # 指定代理idlisteners=PLAINTEXT://192.168.1.131:9092 #用来监听链接的端口,producer或consumer将在此端口建立连接log.dirs=log.dirs=/root/log/kafka/logs #kafka消息存放的路径zookeeper.connect=s1:2181 #lianlog.cleaner.enable=true #日志清理是否打开
kafka集群
>sa1,sa2,sa3
配置文件信息
broker.id=0listeners=PLAINTEXT://192.168.0.130:9092log.dirs=/home/centos01/kafka/logszookeeper.connect=sa0:2181,sa1:2181,sa2:2181
启动过程:
kafka-server-start.sh -daemon server.properties
查看主题
kafka-topics.sh --zookeeper sa0:2181 --list
创建主题
kafka-topics.sh --create --zookeeper sa0:2181 --replication-factor 2 --partitions 3 --topic test
生产者
kafka-console-producer.sh --broker-list s1:9092 --topic test
消费者
kafka-console-consumer.sh --bootstrap-server s1:9092 --topic test --from-beginning
五、flume
wget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gztar –zxvf apache-flume-1.8.0-bin.tar.gzmv apache-flume-1.8.0-bin /usr/local/flume
六、hadoop集群
单机模式
$ sudo tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local$ cd /usr/local/# 可省略$ sudo mv ./hadoop-2.7.1/ ./hadoop # 将文件夹名改为hadoop$ sudo chown -R hadoop ./hadoop # 修改文件权限
伪分布式模式
core-site.xml
<configuration><property><name>hadoop.tmp.dir</name><!--hadoop.tmp.dir用于保存临时文件,如果没有配置这个参数,则默认使用的临时目录 --><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><!-- 用于指定HDFS的访问地址 --><value>hdfs://localhost:9000</value></property></configuration>
hdfs-site.xml
<configuration><property><!--dfs.replicaion:指定副本数量,在分布式文件系统中,数据通常会被冗余的存储多份,以保证可靠性和安全性,但是这里用的是伪分布式模式,节点只有一个,也有就只有一个副本。 --><name>dfs.replication</name><value>1</value></property><property><!--dfs.namenode.name.di:设定名称节点元数据的保存目录 --><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/tmp/dfs/name</value></property><property><!--dfs.datanode.data.dir:设定数据节点的数据保存目录 --><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/tmp/dfs/data</value></property></configuration>
【注意】:Hadoop的运行方式是由配置文件决定的,如果想从伪分布式模式切换回单机模式,只需删除core-site.xml文件中的配置项即可
**
执行名称节点格式化
$ cd /usr/local/hadoop$ ./bin/hdfs namenode -format
启动Hadoop
$ cd /usr/local/hadoop$ ./sbin/start-dfs.sh
查看后发现JAVA_HOME路径已经设置,那就只能将/hadoop/etc/hadoop/hadoop-env.sh文件的JAVA_HOME改为绝对路径了。将export JAVA_HOME=$JAVA_HOME改为export JAVA_HOME=/usr/lib/jvm/default-java
用jps命令查看Hadoop是否启动成功,如果出现DataNode、NameNode、SecondaryNameNode的进程说明启动成功。
如果还要问题,重复如下命令:
$ ./sbin/stop-dfs.sh # 关闭$ rm -r ./tmp # 删除 tmp 文件,注意这会删除 HDFS中原有的所有数据$ ./bin/hdfs namenode -format # 重新格式化名称节点$ ./sbin/start-dfs.sh # 重启
使用浏览器查看HDFS信息
http://localhost:50070
运行Hadoop伪分布式实例
$ cd /usr/local/hadoop$ ./bin/hdfs dfs -mkdir -p /user/hadoop # 在HDFS中创建用户目录$ ./bin/hdfs dfs -mkdir input #在HDFS中创建hadoop用户对应的input目录$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input #把本地文件复制到HDFS中$ ./bin/hdfs dfs -ls input #查看文件列表Found 8 items-rw-r--r-- 1 hadoop supergroup 4436 2019-01-11 19:35 input/capacity-scheduler.xml-rw-r--r-- 1 hadoop supergroup 1075 2019-01-11 19:35 input/core-site.xml-rw-r--r-- 1 hadoop supergroup 9683 2019-01-11 19:35 input/hadoop-policy.xml-rw-r--r-- 1 hadoop supergroup 1130 2019-01-11 19:35 input/hdfs-site.xml-rw-r--r-- 1 hadoop supergroup 620 2019-01-11 19:35 input/httpfs-site.xml-rw-r--r-- 1 hadoop supergroup 3518 2019-01-11 19:35 input/kms-acls.xml-rw-r--r-- 1 hadoop supergroup 5511 2019-01-11 19:35 input/kms-site.xml-rw-r--r-- 1 hadoop supergroup 690 2019-01-11 19:35 input/yarn-site.xml$ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'....$ ./bin/hdfs dfs -cat output/* #查看运行结果1 dfsadmin1 dfs.replication1 dfs.namenode.name.dir1 dfs.datanode.data.dir
再次运行需要删除output文件夹
$ ./bin/hdfs dfs -rm -r output # 删除 output 文件夹
关闭Hadoop
./sbin/stop-dfs.sh
下次启动时不需要再执行节点格式化命令(否则会报错),只需要直接运行start-dfs.sh命令即可。
完全分布式模式
namenode sa0, sa5 # namenodeDatanode sa1,sa2,sa3,sa4 # datanode 节点Journalnode sa1,sa2,da3 # journalnode 节点- 
core-site.xml 文件配置
 <configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><property><name>hadoop.tmp.dir</name><value>/home/centos01/hadoop</value></property><property><name>ha.zookeeper.quorum</name><value>sa0:2181,sa1:2181,sa2:2181</value></property>- 
hdfs-site.xml文件配置
 <configuration><property><name>dfs.replication</name><value>3</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>sa1:8020</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>sa5:8020</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>sa1:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>sa5:50070</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://sa1:8485;sa2:8485;sa3: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>sshfenceshell(/bin/true)</value></property><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/home/centos01/.ssh/id_rsa</value></property><property><name>dfs.journalnode.edits.dir</name><value>/home/centos01/hadoop/journal</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property>- 
slaves文件配置
 存放datanode节点sa1sa2sa3sa4启动过程:
先启动1.hadoop-daemon.sh start journalnode// 在一台nn上执行2. hdfs namenode -formathadoop-daemon.sh start namenode在另一台nn上执行hdfs namenode -bootstrapStandbyhadoop-daemon.sh start namenode先停止所有的Hadoop进行运行,在执行一下指令bin/hdfs zkfc -formatZKstart-dfs.sh
Hbase 集群搭建
hbase集群
master:sa0,sa3regsionServer: sa1,sa2,sa3
hbase-env.sh 文件配置
export JAVA_HOME=/soft/jdk/export HBASE_CLASSPATH=$HBASE_CLASSPATH:/soft/hadoop/etc/hadoopexport HBASE_MANAGES_ZK=false
hbase-site.xml 文件配置
<configuration><property><name>hbase.root.dir</name><value>hdfs://mycluster/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>sa0,sa1,sa2</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/centos01/hbase</value></property>- 
regionservers 文件配置
sa1sa2sa3
同步hbase到其他主机
rsync -lr hbase-2.1.0 centos01@sa1:/soft
hbase和hadoop通用高可用集群
xcall.sh "ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/hbase/conf/hdfs-site.xml"
启动habse
start-hbase.sh
sa3单独启动hbase
hbase-daemon.sh start master
webch查看
192.168.0.130:16010
storm集群
sa0, sa1, sa2, sa3
配置文件信息:
storm.zookeeper.servers:
- “sa0”
- “sa1”
- “sa2”storm.local.dir: "/home/centos01/storm"supervisor.slots.ports:- 6700- 6701- 6702nimbus.host: "sa0"drpc.servers:- "sa0"
启动storm
sa0
storm nimbus&sa1 sa2 sa3storm supervisor&sa0storm ui&storm drpc
========spark集群搭建=========
sa0, sa1, sa2, sa3
======安装mysql======
sa5:
1.安装前,我们可以检测系统是否自带安装 MySQL:
rpm -qa | grep mysql
2.如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式
rpm -e —nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
3.安装 MySQL:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum update
sudo yum install mysql-server
4.权限设置:
chown mysql:mysql -R /var/lib/mysql
5.初始化 MySQL:
sudo mysqld —initialize
6.启动 MySQL:
systemctl start mysqld
7.查看 MySQL 运行状态:
systemctl status mysqld
8.给root用户设置密码
mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);
9.导入sql文件数据
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:/dbname.sql
10.导出sql数据
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql 创建用户
insert into mysql.user(Host,User,Password) values(“0.0.0.0”,”root”,password(“root”));
====mysql的替代品==== 
1.安装 
yum -y install mariadb-server mariadb
2.卸载 
rpm -qa | grep mariadb 
rpm -e mariadb  // 普通删除模式 
rpm -e —nodeps mariadb  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
3.启动mariadb 
systemctl start mariadb 
systemctl enable mariadb
4.可选 
开启远程登录模型 
首先停止 
# service mysqld stop 
执行安全模式 
# mysqld_safe —skip-grant-table
hive 按照步骤
hive安装
1.下载hive
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-1.2.2/apache-hive-1.2.2-bin.tar.gz
2.解压
tar -zxvf apache-hive-1.2.2-bin.tar.gz -C /soft/$>cd /soft/hive-2.1.0 //$>ln -s hive-2.1.0 hive //符号连接
3.配置环境变量
[/etc/profile]HIVE_HOME=/soft/hivePATH=...:$HIVE_HOME/bin
4.验证hive安装成功
hive --version
5.配置hive,使用mysql存放hive的元数据
5.1 拷贝mysql驱动到hive的lib目录下。
mysql-connector-java-5.1.34.tar.gz
mv mysql-connector-java-5.1.7-bin.jar /soft/hive/lib/
5.2 配置hive-site.xml
复制hive-default.xml.template为hive-site.xml, 清空之前的文件内容
[hive/conf/hive-site.xml] 
<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://s1:3306/hive2</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>root</value></property><property><name>hive.metastore.schema.verification</name><value>false</value></property></configuration>
5.3 在msyql中创建存放hive信息的数据库
mysql>create database hive2 ;
5.4初始化hive的元数据(表结构)到mysql中
$>cd /soft/hive/bin$>schematool -dbType mysql -initSchema[root@s1 bin]# schematool -dbType mysql -initSchemaMetastore connection URL: jdbc:mysql://s1:3306/hive2Metastore Connection Driver : com.mysql.jdbc.DriverMetastore connection User: rootStarting metastore schema initialization to 1.2.0Initialization script hive-schema-1.2.0.mysql.sqlInitialization script completedschemaTool completed
hive命令行操作
1.创建hive的数据库$hive>hive --version //$hive>hive --help //$hive>create database mydb2 ; //$hive>show databases ;$hive>use mydb2 ;$hive>create table mydb2.t(id int,name string,age int);$hive>drop table t ;$hive>drop table mydb2.t ;$hive>select * from mydb2.t ; //查看指定库的表$hive>exit ; //退出$>hive //hive --service cli$>hive //hive --service cli
hive命令
//创建表,external 外部表$hive>CREATE external TABLE IF NOT EXISTS t2(id int,name string,age int)COMMENT 'xx' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE ;//查看表数据$hive>desc t2 ;$hive>desc formatted t2 ;//加载数据到hive表$hive>load data local inpath '/home/centos/customers.txt' into table t2 ; //local上传文件$hive>load data inpath '/user/centos/customers.txt' [overwrite] into table t2 ; //移动文件//复制表mysql>create table tt as select * from users ; //携带数据和表结构mysql>create table tt like users ; //不带数据,只有表结构hive>create table tt as select * from users ;hive>create table tt like users ;//count()查询要转成mr$hive>select count(*) from t2 ;$hive>select id,name from t2 ;//$hive>select * from t2 order by id desc ; //MR//启用/禁用表$hive>ALTER TABLE t2 ENABLE NO_DROP; //不允许删除$hive>ALTER TABLE t2 DISABLE NO_DROP; //允许删除//分区表,优化手段之一,从目录的层面控制搜索数据的范围。//创建分区表.$hive>CREATE TABLE t3(id int,name string,age int) PARTITIONED BY (Year INT, Month INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;//显式表的分区信息$hive>SHOW PARTITIONS t3;//添加分区,创建目录$hive>alter table t3 add partition (year=2014, month=12);//删除分区hive>ALTER TABLE employee_partitioned DROP IF EXISTS PARTITION (year=2014, month=11);//分区结构hive>/user/hive/warehouse/mydb2.db/t3/year=2014/month=11hive>/user/hive/warehouse/mydb2.db/t3/year=2014/month=12//加载数据到分区表hive>load data local inpath '/home/centos/customers.txt' into table t3 partition(year=2014,month=11);//创建桶表$hive>CREATE TABLE t4(id int,name string,age int) CLUSTERED BY (id) INTO 3 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;//加载数据不会进行分桶操作$hive>load data local inpath '/home/centos/customers.txt' into table t4 ;//查询t3表数据插入到t4中。$hive>insert into t4 select id,name,age from t3 ;//桶表的数量如何设置?//评估数据量,保证每个桶的数据量block的2倍大小。//连接查询$hive>CREATE TABLE customers(id int,name string,age int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;$hive>CREATE TABLE orders(id int,orderno string,price float,cid int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;//加载数据到表//内连接查询hive>select a.*,b.* from customers a , orders b where a.id = b.cid ;//左外hive>select a.*,b.* from customers a left outer join orders b on a.id = b.cid ;hive>select a.*,b.* from customers a right outer join orders b on a.id = b.cid ;hive>select a.*,b.* from customers a full outer join orders b on a.id = b.cid ;//explode,炸裂,表生成函数。//使用hive实现单词统计//1.建表$hive>CREATE TABLE doc(line string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
========集群启动的流程======== 
1.zk 
2.
===================
sa0 sa1 sa2
flink集群搭建 
====sa2=====
sa2 
1. flink-conf.yaml 
jobmanager.rpc.address: sa2
ES搭建步骤 
1.下载tar包
2.解压/soft
3.建立软连接 
ln -s elasticsearch-5.5.1 es
4.修改/etc/profile文件,添加PATH路径 
export ES_HOME=/soft/es 
export PATH=ES_HOME/bin
- 生效 
source /etc/profile 
6.修改配置文件 
cluster.name: my-es 
node.name: my-es01 
path.data: /home/centos01/es/data 
path.logs: /home/centos01/es/log 
bootstrap.memory_lock: false 
bootstrap.system_call_filter: false 
network.host: 192.168.0.130 
http.port: 9200
7.通过浏览器访问: 
http://192.168.0.130:9200
遇到的问题 
ES安装步骤出现的错误 
ERROR: [2] bootstrap checks failed 
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] 
解决方案: 切到root 用户:进入到security目录下的limits.conf;执行命令 vim /etc/security/limits.conf 在文件的末尾添加下面的参数值: 
* soft nofile 65536
* hard nofile 131072* soft nproc 2048* hard nproc 4096[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]解决方案:切换到root用户修改配置sysctl.conf 增加配置值: vm.max_map_count=655360执行命令 sysctl -p 这样就可以了,然后重新启动ES服务 就可以了es-Head插件gitnodejses-headgit clone
=============== 
kibana 版本与 es 版本要一致
kibana安装步骤 
1.下载tar包
2.解压tar包
3.建立软连接
4./etc/profile配置文件中添加修改配置信息
修改配置文件 
1. 
kibana所在服务器的地址 
server.host:”192.168.0.130”
2. 
es 所在的地址 
elasticsearch.url “”
3.开启kibana
+
