Hadoop环境搭建

搭建成功后各节点分工如下所示:

NN1 NN2 DN ZK ZKFC JNN RS NM
node1 * * *
node2 * * * * * *
node3 * * * * *
node4 * * * *

一、基础环境配置

1、配置免秘钥

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp id_dsa.pub node2:`pwd` /node1.pub

cat ~/.ssh/node1.pub >> ~/.ssh/authorized_keys
ssh node2

2、Windows10下的地址映射(可不做)

进入C:\Windows\System32\drivers\etc目录,编辑hosts文件

在末尾添加如下配置:

192.168.153.101	node1
192.168.153.102	node2
192.168.153.103	node3
192.168.153.104	node4

添加后web端输入的IP地址即可被主机名代替。

3、安装JDK

解压JDK安装包

cd /opt/software
rpm -i jdk-7u67-linux-x64.rpm

编写环境变量

whereis java
vi + /etc/profile

环境变量中添加:

export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile

二、Hadoop环境搭建

前期准备:配置IP、MVC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量,测试

1、伪分布式安装

在node1节点中先搭建伪分布式

(1)hadoop包安装并配置环变量

安装版本:hadoop-2.6.5.tar.gz

tar xf hadoop-2.6.5.tar.gz -C /opt/module
vi + /etc/profile

在环境变量中添加如下:

HADOOP_HOME=/opt/module/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新更改的配置

source /etc/profile

(2)更改Hadoop的配置文件

进入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.defaultFSname>
        <value>hdfs://node1:9000value>
    property>
    <property>
        <name>hadoop.tmp.dirname>
        <value>/var/module/hadoop/pseudovalue>
    property>
configuration>

配置hdfs-site.xml

vi hdfs-site.xml

在hdfs-site.xml中添加如下配置:

<configuration>
   <property>
        <name>dfs.replicationname>
        <value>1value>
   property>
   <property>
        <name>dfs.namenode.secondary.http-addressname>
        <value>node1:50090value>
    property>
configuration>

配置slaves:
shell vi slaves

在slaves中添加:

node1

(3)格式化并启动hdfs

格式化hdfs(只能格式化一次,再次启动集群不要执行)

hdfs namenode -format

启动集群

start-dfs.sh

角色进程查看

jps

帮助命令:

hdfs 
hdfs dfs 	

查看web UI

地址为http://node1:50070

如果之前未配置Windows10的地址映射,则地址为http://192.168.153.101:50070

Hadoop环境搭建_第1张图片

创建目录:

hdfs dfs  -mkdir -p  /user/root

查看目录:

hdfs dfs -ls /

上传文件:

hdfs dfs -put hadoop-2.6.5.tar.gz /user/root				

停止集群:

stop-dfs.sh

2、全分布式环境搭建

事先准备:先将单节点的hadoop配置文件复制并保存到hadoop_pseudo文件夹备份:

cp -r hadoop hadoop_pseudo 

(1)在伪分布式的基础上更改hadoop的配置文件

更改配置core-site.xml

vi core-site.xml

将core-site.xml改为如下格式

    <property>
        <name>fs.defaultFSname>
        <value>hdfs://node1:9000value>
    property>
    <property>
        <name>hadoop.tmp.dirname>
        <value>/var/module/hadoop/fullvalue>
    property>

更改配置hdfs-site.xml

vi hdfs-site.xml

将hdfs-site.xml改为如下格式

   <property>
        <name>dfs.replicationname>
        <value>2value>
   property>
   <property>
        <name>dfs.namenode.secondary.http-addressname>
        <value>node2:50090value>
    property>

更改配置slaves:

vi slaves

将slaves改为如下格式

node2
node3
node4

(2)分发Hadoop到其他节点

分发 hadoop-2.6.5 给其他节点

cd/opt/module/
scp -r hadoop-2.6.5 node2:`pwd`
scp -r hadoop-2.6.5 node3:`pwd`
scp -r hadoop-2.6.5 node4:`pwd`

分发环境变量配置文件给其他节点

scp /etc/profile node2:/etc/
scp /etc/profile node3:/etc/
scp /etc/profile node4:/etc/
. /etc/profile
hdfs

(3)格式化并启动

格式化(只能格式化一次)

hdfs namenode -format 

启动Hadoop集群

start-dfs.sh

完成简单的创建目录以及上传文件操作

hdfs dfs -mkdir -p /user/root
for i in `seq 100000`;do  echo "hello sxt $i" >> test.txt;done
hdfs dfs -D dfs.blocksize=1048576 -put test.txt

登录web界面 http://node1:50070
Hadoop环境搭建_第2张图片
Hadoop环境搭建_第3张图片

3、HA高可用配置

前期准备:将全分布式的hadoop配置文件备份到hadoop_full文件夹中

cd /opt/module/hadoop-2.6.5/etc/
cp -r hadoop hadoop_full

(1)重新配置Hadoop的配置文件并分发

配置core-site.xml

vi core-site.xml

在core-site.xml文件中,更改原有配置

    <property>
       <name>fs.defaultFSname>
       <value>hdfs://myclustervalue>
    property>
    <property>
        <name>hadoop.tmp.dirname>
        <value>/var/module/hadoop/havalue>
    property> 

更改后,在core-site.xml文件中,增加如下

    <property>
       <name>ha.zookeeper.quorumname>
       <value>node2:2181,node3:2181,node4:2181value>
    property>

配置hdfs-site.xml

vi hdfs-site.xml

去掉原有的SNN配置

    <property>
        <name>dfs.namenode.secondary.http-addressname>
        <value>node2:50090value>
    property>

增加如下配置

    <property>
        <name>dfs.nameservicesname>
        <value>myclustervalue>
    property>
    <property>
        <name>dfs.ha.namenodes.myclustername>
        <value>nn1,nn2value>
    property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1name>
        <value>node1:8020value>
    property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2name>
        <value>node2:8020value>
    property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1name>
        <value>node1:50070value>
    property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2name>
        <value>node2:50070value>
    property>
    <property>
        <name>dfs.namenode.shared.edits.dirname>
        <value>qjournal://node1:8485;node2:8485;node3:8485/myclustervalue>
    property>
    <property>
        <name>dfs.client.failover.proxy.provider.myclustername>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
    property>
    <property>
        <name>dfs.ha.fencing.methodsname>
        <value>sshfencevalue>
    property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-filesname>
        <value>/root/.ssh/id_dsavalue>
    property>
    <property>
        <name>dfs.journalnode.edits.dirname>
        <value>/var/module/hadoop/ha/journalnodevalue>
    property>
    <property>
        <name>dfs.ha.automatic-failover.enabledname>
        <value>truevalue>
    property>

更改后的hdfs-site.xml如下:

<configuration>
    <property>
        <name>dfs.replicationname>
        <value>1value>
    property>
    <property>
        <name>dfs.nameservicesname>
        <value>myclustervalue>
    property>
    <property>
       <name>dfs.ha.namenodes.myclustername>
       <value>nn1,nn2value>
    property>
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn1name>
       <value>node1:8020value>
    property>
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn2name>
       <value>node2:8020value>
    property>
    <property>
       <name>dfs.namenode.http-address.mycluster.nn1name>
       <value>node1:50070value>
    property>
    <property>
       <name>dfs.namenode.http-address.mycluster.nn2name>
       <value>node2:50070value>
    property>

    <property>
       <name>dfs.namenode.shared.edits.dirname>
       <value>qjournal://node1:8485;node2:8485;node3:8485/myclustervalue>
    property>

    <property>
       <name>dfs.client.failover.proxy.provider.myclustername>
       <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
    property>
    <property>
       <name>dfs.ha.fencing.methodsname>
       <value>sshfencevalue>
    property>
    <property>
       <name>dfs.ha.fencing.ssh.private-key-filesname>
       <value>/root/.ssh/id_rsavalue>
    property>

    <property>
       <name>dfs.journalnode.edits.dirname>
       <value>/var/module/hadoop/ha/journalnodevalue>
    property>

    <property>
        <name>dfs.ha.automatic-failover.enabledname>
        <value>truevalue>
     property>
configuration>

分发core-site.xml hdfs-site.xml 给其他节点

scp core-site.xml hdfs-site.xml node2:`pwd`
scp core-site.xml hdfs-site.xml node3:`pwd`
scp core-site.xml hdfs-site.xml node4:`pwd`	

(2)安装zookeeper集群(node2 node3 node4):

1.zk压缩包解压在其他路径下(node2):

tar xf zookeeper-3.4.6.tar.gz -C /opt/module/

2.进入conf目录,拷贝zoo_sample.cfg zoo.cfg 并配置dataDir,集群节点(node2)

cd /opt/module/zookeeper-3.4.6/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg

在文件中间修改:

dataDir=/var/module/zk

在文件末尾添加:

server.1=node2:2888:3888
server.2=node3:2888:3888
server.3=node4:2888:3888

3.(node2)分发zookeeper到node3,node4

cd/opt/module/
scp -r zookeeper-3.4.6/ node3:`pwd`
scp -r zookeeper-3.4.6/ node4:`pwd`

4.创建 /var/module/zk目录,进入各自目录 分别输出1,2,3 至文件 myid(node2、node2node3node4)

node2、node3、node4先创建需要的zk文件夹

mkdir /var/module/zk

node2进行如下配置,将node2的myid设置为1

echo 1 > /var/module/zk/myid

node3进行如下配置,将node3的myid设置为2

echo 2 > /var/module/zk/myid

node4进行如下配置,将node4的myid设置为3

echo 3 > /var/module/zk/myid

node2、node3、node4检查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

分发到node3和node4中(也可以单独在node3、node4中配置环境变量)

scp /etc/profile node3:/etc/
scp /etc/profile node4:/etc/

更新配置文件

source /etc/profile
  1. node2 node3 node4启动zkServer.sh start 集群
zkServer.sh start
zkServer.sh status
zkServer.sh stop

2,3,4节点启动jn 集群

hadoop-daemon.sh start journalnode

随意找一个nn节点格式化(node1):

hdfs namenode -format

启动该节点(node1):

hadoop-daemon.sh start namenode

另一nn节点同步(node2):

hdfs namenode -bootstrapStandby

格式化zkfc,在zookeeper中可见目录创建(node1):

hdfs zkfc -formatZK

(3)配置mr-hd2.x yarn

NN1 NN2 DN ZK ZKFC JNN RS NM
node1 * * *
node2 * * * * * *
node3 * * * * *
node4 * * * *

进入配置文件目录并更改文件名称

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.namename>
        <value>yarnvalue>
	property>

配置yarn-site.xml:

vi yarn-site.xml

在yarn-site.xml中增加如下配置:

    <property>
        <name>yarn.nodemanager.aux-servicesname>
        <value>mapreduce_shufflevalue>
    property> 
    <property>
        <name>yarn.resourcemanager.ha.enabledname>
        <value>truevalue>
    property>
    <property>
        <name>yarn.resourcemanager.cluster-idname>
        <value>cluster1value>
    property>
    <property>
        <name>yarn.resourcemanager.ha.rm-idsname>
        <value>rm1,rm2value>
    property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1name>
        <value>node3value>
    property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2name>
        <value>node4value>
    property>
    <property>
        <name>yarn.resourcemanager.zk-addressname>
        <value>node2:2181,node3:2181,node4:2181value>
    property>

分发两个文件到:07,08,09节点

scp mapred-site.xml yarn-site.xml node2:`pwd`
scp mapred-site.xml yarn-site.xml node3:`pwd`
scp mapred-site.xml yarn-site.xml node4:`pwd`

4、启动:

(1)首次启动

1.2,3,4节点zookeeper:

zkServer.sh start

2.hdfs (注意,有一个脚本不要用,start-all)

start-dfs.sh

如果nn 和 nn2没有启动,需要在node1,node2分别手动启动:

hadoop-daemon.sh start namenode	

3.启动nodemanager:

start-yarn.sh

4.在3,4节点分别执行脚本:

yarn-daemon.sh start resourcemanager

(2)UI访问

Hadoop环境搭建_第4张图片
Hadoop环境搭建_第5张图片

yarnUI访问地址: http://192.168.153.103:8088
Hadoop环境搭建_第6张图片

(3)停止集群

node1: (停止nodemanager)

stop-dfs.sh 
stop-yarn.sh

node3,node4:(停止resourcemanager)

yarn-daemon.sh stop resourcemanager 

(4)启动集群

以后每次启动集群,只需要执行以下命令

node2,node3,node4:

zkServer.sh start

node1:

start-all.sh

node3,node4:

yarn-daemon.sh start resourcemanager

三、Hive安装

前期准备:配置IP、MVC地址、hosts、hostname、关闭防火墙、安装jdk、配置环境变量,测试安装Hadoop全分布式

在搭建的Hive环境中,各节点的作用如下:

node1:安装MySQL

node2:搭建单节点Hive

node3:搭建多节点Hive,作为服务端

node4:搭建多节点Hive,作为客户端

1、安装MySQL

node1中配置MySQL

yum install mysql-server

如果找不到软件包,执行如下命令

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

启动服务并进入数据库

service mysqld start
mysql

数据库中执行以下命令设置密码:

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

2、Hive单节点搭建

单用户模式,node2单节点配置Hive,与node1的MySQL相连接

(1)解压并配置Hive配置文件

在node2上解压安装Hive(node2单节点)

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

配置环境变量(node2单节点):

vi + /etc/profile

进行如下更改

#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin

更新环境变量

source /etc/profile

(2)修改jar包名称并配置MySQL驱动

修改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 ./

拷贝MySQL驱动包到HIVE_HOME\lib目录下

cd /opt/software
cp mysql-connector-java-5.1.32-bin.jar /opt/module/hive/lib/

(3)修改配置文件

修改hive-site.xml(node2单节点)

cd /opt/module/hive/conf
mv hive-default.xml.template hive-site.xml
vi hive-site.xml

批量删除hive-site.xml原有的配置:在末行命令行输入: .,$-1d;并增加如下配置

<property>  
    <name>hive.metastore.warehouse.dirname>  
    <value>/user/hive_remote/warehousevalue>  
property> 
<property>
    <name>javax.jdo.option.ConnectionURLname>
    <value>jdbc:mysql://node1/hive_remote?createDatabaseIfNotExist=truevalue>
property>
<property>
    <name>javax.jdo.option.ConnectionDriverNamename>
    <value>com.mysql.jdbc.Drivervalue>
property>
<property>
    <name>javax.jdo.option.ConnectionUserNamename>
    <value>rootvalue>
property>
<property>
     <name>javax.jdo.option.ConnectionPasswordname>
     <value>121314value>
property>

(4)单节点启动Hive并执行简单的操作

启动(node2单节点)

hive

Hive的基本操作(node2单节点):

show tables;
create table tbl(id int,age int);
show tables;
insert into tbl values(1,1);
select * from tbl;
quit;

在node1:50070web页面中的Browse Directory输入路径/user/hive_remote/warehouse/tbl

node1中进入数据库可以看到hive存到数据库中的表:

mysql -uroot -p
show databases;
use hive_remote;
show tables;
select * from TBLS;
quit;

3、Hive多节点搭建

多用户模式Remote分开,node3是服务端,node4是客户端

(1)分发Hive到其他节点并编辑配置文件

将node2中的单节点hive分发到node3、node4

scp -r hive/ node3:`pwd`
scp -r hive/ node4:`pwd`

node3、node4配置环境变量:

vi /etc/profile
#HIVE_HOME
HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
. /etc/profile

(2)更改服务端配置文件(node3)

node3(服务端)更改hive.site.xml配置文件

cd /opt/module/hive/conf/
vi hive-site.xml

前两项的value改变,“hive_romate"改为"hive”

 <property>
        <name>hive.metastore.warehouse.dirname>
        <value>/user/hive/warehousevalue>       
    property>
    <property>
        <name>javax.jdo.option.ConnectionURLname>
        <value>jdbc:mysql://node1/hive?createDatabaseIfNotExist=truevalue>
    property>
    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    property>
    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>
    <property>
         <name>javax.jdo.option.ConnectionPasswordname>
         <value>121314value>
    property>

(3)更改客户端配置文件(node4)

1.node4(客户端)更改hive.site.xml配置文件

cd /opt/module/hive/conf/
vi hive-site.xml

2.更改hive-site.xml

<property>
    <name>hive.metastore.warehouse.dirname>
    <value>/user/hive/warehousevalue>
property>
<property>
    <name>hive.metastore.urisname>
    <value>thrift://node3:9083value>
property>
<property>
    <name>hive.metastore.localname>
    <value>falsevalue>
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 ./

(4)先后启动服务端和客户端

node3服务端元数据启动(阻塞式窗口)

hive --service metastore

node4客户端启动

hive

在node4的hive客户端里进行简单的操作

create table psn(id int);
show tables;
insert into psn values(1);

可以在node1的MySQL中查找hive库中的psn表
可以在http://node1:50070的web页面中进入/user/hive/warehouse/psn查找表文件
Hadoop环境搭建_第7张图片

4、hiveserver2 Beeline启动

(1)node3启动hiveserver2(阻塞式窗口)

hiveserver2

(2)node4的beeline连接(两种方式)

方式一:

beeline

(连接成功后node3的hiveserver2会弹出ok)

!connect jdbc:hive2://node3:10000/default root 121314

退出beeline连接

!close
!quit

方式二:

beeline -u jdbc:hive2://node3:10000/default root 121314
show tables ;

退出连接

!quit

四、HBase

1、伪分布式

在node1节点中搭建

(1)解压安装HBase并配置环境变量

安装(node1单节点)

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

(2)修改配置文件

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.rootdirname>
    <value>file:///home/testuser/hbasevalue>
property>
<property>
    <name>hbase.zookeeper.property.dataDirname>
    <value>/home/testuser/zookeepervalue>
property>

(3)启动HBase并进行简单的操作

1.启动HBASE

start-hbase.sh

2.进入web端:node1:60010
Hadoop环境搭建_第8张图片

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

2、完全分布式hbase搭建

node1主,node4从

在node1中配置,后续分发到node2、node3、node4

(1)更改HBase的配置文件

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>node2,node3,node4</value>
    </property>

3.修改regionservers

vi regionservers

更改为:

node2
node3
node4

4.创建backup-masters(以node1为启动节点,所以该文件中配置node4)

vi backup-masters

添加以下配置

node4

5、拷贝hdfs-site.xml到conf目录

cp /opt/module/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ./

(2)分发HBase到其他节点并配置环境变量

将hbase分发到其他节点(node2、node3、node4)

scp -r /opt/module/hbase node2:/opt/module/
scp -r /opt/module/hbase node3:/opt/module/
scp -r /opt/module/hbase node4:/opt/module/

其他节点修改环境变量(node2、node3、node4)

vi + /etc/profile
#HBASE_HOME
export HBASE_HOME=/opt/module/hbase
export PATH=$PATH:$HBASE_HOME/bin

(3)启动HBase

node1:

start-hbase.sh

进入web端:http://node1:60010
Hadoop环境搭建_第9张图片
Hadoop环境搭建_第10张图片

进入hbase命令行:

hbase shell

五、Redis

1、redis单机环境搭建

安装版本 redis-2.8.18.tar.gz

1.下载gcc,tcl 命令编译器

yum -y install gcc tcl
whereis gcc tcl

2.解压

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

2、redis伪分布主从环境配置

(1)高可用搭建

进入opt目录下

cd /opt

1.创建redis目录:

mkdir redis

2.在redis目录下分别创建3个端口目录: 6380,6381,6382
(不在配置文件中写他的目录指定关系,直接在当前目录下执行,持久化目录)

cd redis/
mkdir 6380
mkdir 6381
mkdir 6382

3.当前目录下分别启动3个实例:
(1)在node1中新建三个终端,分别进入 6380 6381 6382目录,并且执行以下命令:
进入6380的终端执行:

redis-server --port 6380

进入6381的终端执行:

redis-server --port 6381 --slaveof 127.0.0.1 6380

进入6382的终端执行:

redis-server --port 6382 --slaveof 127.0.0.1 6380

(2)在node1中新建三个终端,分别执行以下命令:

redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382

4.主从演示 crud权限,高可用

(2)伪分布哨兵集群搭建:

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.目录下创建启动配置文件病拷贝:

vi s1.conf 

配置文件内容:

port 26380
sentinel monitor sxt 127.0.0.1 6380 2

拷贝

cp s1.conf s2.conf
cp s1.conf s3.conf

分别对拷贝的s2.conf、s3.conf进行更改

s2.conf:

port 26381
sentinel monitor sxt 127.0.0.1 6380 2

s3.conf:

port 26382
sentinel monitor sxt 127.0.0.1 6380 2

4 启动三个主从redis实例
在node1中新建三个终端,分别进入 6380 6381 6382目录,并且执行以下命令:
进入6380的终端执行:

redis-server --port 6380

​ 进入6381的终端执行:

redis-server --port 6381 --slaveof 127.0.0.1 6380

​ 进入6382的终端执行:

redis-server --port 6382 --slaveof 127.0.0.1 6380

5 启动sentinel读取配置文件:
在node1中新建三个终端,分别执行以下命令:

redis-sentinel s1.conf 
redis-sentinel s2.conf 
redis-sentinel s3.conf

6 测试:演示自动提备
在node1中新建三个终端,分别执行以下命令:

redis-cli -p 6380
redis-cli -p 6381
redis-cli -p 6382

挂断主节点,哨兵会自动寻找新的节点

3、redis主从全分布集群

全分布式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 :

tar xf redis-3.0.4.tar.gz

4 redis目录下make命令编译拷贝bin至 /opt/sxt/redis/下

make && make PREFIX=/opt/module/redis install

成功后会有哨兵显示

5 测试 是否成功

输入re后按table键看是有提示

6 安装rubby编译环境

yum -y install ruby rubygems 

7 redis-cluster 目录下安装 redis gem 模块:

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 700x
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 不跳转

六、ElasticSearch

注意:elasticsearch具有特殊性,不能使用root用户运行,所以创建一个sxt普通用户。安装elasticsearch时直接切换到sxt安装,相比于用root安装,省去了转权限的步骤

xftp拷贝elasticsearch-2.2.1.zip至software目录下

node1、node2、node3共同安装
1.安装unzip

yum -y install unzip

2.共享模式下创建sxt用户:(node1、node2、node3)

useradd sxt
passwd sxt
121314

3.root 用户创建 /opt/module/es(普通用户无法创建)(node1、node2、node3)(注意:此时的目录权限属于root)

mkdir -p /opt/module/es 

在附近目录下执行:(node1、node2、node3)

chown sxt:sxt es

切换用户(node1、node2、node3)

su sxt

4.使用sxt用户解压elasticsearch-2.2.1.zip包至es目录,保证es文件属于用户sxt:

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: bjsxt-es

修改elasticsearch.yml配置文件的node(分发文件后记得修改node):

node.name: node1 

修改elasticsearch.yml配置文件的network(分发文件后记得修改network):

network.host: 192.168.153.101
http.port:9200

末尾增加防脑裂:

discovery.zen.ping.multicast.enabled: false 
discovery.zen.ping.unicast.hosts: ["192.168.153.101","192.168.153.102", "192.168.153.103"]
discovery.zen.ping_timeout: 120s
client.transport.ping_timeout: 60s

6.将提供的plugins文件夹通过Xftp工具传输到 /opt/module/es/elasticsearch-2.2.1/中
7.切换至root用户把plugins文件夹的权限给sxt用户(可以不做)

su root
chown sxt:sxt -R plugins/
su sxt

8.分发其他节点(用sxt角色分发):

cd /opt/module/es
scp -r elasticsearch-2.2.1/ sxt@node2:/opt/module/es/
scp -r elasticsearch-2.2.1/ sxt@node3:/opt/module/es/

9.分别修改配置文件的主机名和ip地址

10.进入bin目录,启动脚本:

cd /opt/module/es/elasticsearch-2.2.1/bin/
./elasticsearch

11.测试插件效果
http://ip:9200/_plugin/head
http://192.168.133.6:9200/_plugin/head?pretty

七、CDH

Cloudera Manager离线部署CDH文档

1、说明

操作系统:CentOS 7

JDK版本:1.7.0_80

所需安装包及版本说明:

CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel

CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha

manifest.json

cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz

CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中

CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1重命名为CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel文件

本文采用离线安装方式

2、系统环境搭建

(1)网络配置(所有节点)

修改hostname主机名

vi /etc/sysconfig/network

重启网络

service network restart

修改ip与主机名的对应关系

vi /etc/hosts

(2)SSH免密码登录

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp id_dsa.pub node2:`pwd` /node1.pub

cat ~/.ssh/node1.pub >> ~/.ssh/authorized_keys
ssh node2

(3)关闭防火墙

临时关闭:

systemctl stop firewalld

设置开机禁用防火墙(重启后生效):

systemctl disable firewalld.service

(4)关闭SELINUX

临时关闭:

setenforce 0

修改配置文件/etc/selinux/config(重启生效):

将SELINUX=enforcing改为SELINUX=disabled

SELINUX=disabled

查看SELINUX状态:

1、

/usr/sbin/sestatus –v

SELinux status: enabled(enabled:开启;disabled:关闭)

2、使用命令:getenforce

(5)安装JDK

解压JDK安装包

cd /opt/software
rpm -i jdk-7u67-linux-x64.rpm

编写环境变量

whereis java
vi + /etc/profile

环境变量中添加:

export JAVA_HOME=/usr/java/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
. /etc/profile

(6)设置NTP(保持时间一致可以不安装)

所有节点安装NTP:

yum install ntp

配置开机启动:

chkconfig ntpd on

检查是否设置成功(2-5为on状态则成功):

chkconfig --list ntpd 

设置同步(时钟服务器根据实际环境设置、本文采用210.72.145.44-国家授时中心服务器IP地址)

ntpdate -u ntp.sjtu.edu.cn

(7)安装配置MySQL(node1)

yum install mysql-server

如果找不到软件包,执行如下命令

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm

启动服务并进入数据库

service mysqld start
mysql

数据库中执行以下命令设置密码:

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

(8)下载依赖包

  • chkconfig
  • python (2.6 required for CDH 5)
  • bind-utils
  • psmisc
  • libxslt
  • zlib
  • sqlite
  • cyrus-sasl-plain
  • cyrus-sasl-gssapi
  • fuse
  • portmap
  • fuse-libs
  • redhat-lsb
yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb

3、Cloudera Manager Server&Agent安装

(1)安装Cloudera Manager Server&Agent

拷贝cloudera-manager-centos7-cm5.14.2_x86_64.tar.gz到所有Server、Agent节点

创建cm目录(所有节点):

mkdir /opt/cloudera-manager

解压cm压缩包(node1):

tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager

(2)创建用户cloudera-scm(所有节点)

cloudera-scm用户说明,摘自官网:

Cloudera Manager Server and managed services are configured to use the user account cloudera-scm by default, creating a user with this name is the simplest approach. This created user, is used automatically after installation is complete.

执行:

useradd --system --home=/opt/cloudera-manager/cm-5.0/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

(3)配置CM Agent(node1)

修改文件/opt/cloudera-manager/cm-5.14.2 /etc/cloudera-scm-agent/config.ini中server_host以及server_port

server_host=node1
server_port=7182

(4)配置CM Server的数据库

将驱动包拷贝到目录下(注意拷贝过去的驱动包名字一定要和下边的一样,否则会报错):

cp /opt/software/mysql-connector-java-5.1.26-bin.jar /usr/share/java/mysql-connector-java.jar     

进入MySQL执行:

grant all on *.* to 'temp'@'%' identified by 'temp' with grant option;

进入schema目录

cd /opt/cloudera-manager/cm-5.14.2/share/cmf/schema/

执行./scm_prepare_database.sh mysql -h myhost1.sf.cloudera.com -utemp -ptemp --scm-host myhost2.sf.cloudera.com scm scm scm格式代码

例如:

./scm_prepare_database.sh mysql -h node1 -utemp -ptemp --scm-host node1 scm scm scm

(对应于:数据库类型、数据库服务器、用户名、密码、CMServer所在节点…….)

(5)创建Parcel目录(node1)

(1)Manager节点创建目录/opt/cloudera/parcel-repo,执行:

mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo

将下载好的文件(CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel、CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha、manifest.json)拷贝到该目录下。

(2)Agent节点创建目录/opt/cloudera/parcels,执行:

mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

(3)拷贝文件并改名

cp /opt/software/CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel* /opt/cloudera/parcel-repo/
mv CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha1 CDH-5.14.2-1.cdh5.14.2.p0.3-el7.parcel.sha
cp /opt/software/manifest.json /opt/cloudera/parcel-repo/

(4)分发cloudera-manager

scp -r /opt/cloudera-manager/* root@node2:/opt/cloudera-manager/
scp -r /opt/cloudera-manager/* root@node3:/opt/cloudera-manager/

(6)启动CM Server&Agent服务

cd /opt/cloudera-manager/cm-5.14.2/etc/init.d/

执行:

Server:

/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server start

Agents:

/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent start

Sever首次启动会自动创建表以及数据,不要立即关闭或重启,否则需要删除所有表及数据重新安装

访问:http://node1:7180,若可以访问(用户名、密码:admin),则安装成功。

Manager启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。

4、CDH5安装

1、CM Manager && Agent成功启动后,登录前端页面进行CDH安装配置。http://node1:7180

2、免费版本的CM5已经去除50个节点数量的限制。

3、各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。

4、接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。

CDH5.14.2-cdh5.14.2.p0.3

5、点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,大约10多分钟吧,取决于内网网速。

(若本地Parcel有问题,重新检查步骤三、5、创建Parcel目录)是否配置正确)

6、接下来是服务器检查,可能会遇到以下问题:

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:

通过 echo 0 > /proc/sys/vm/swappiness 即可解决。

echo never > /sys/kernel/mm/transparent_hugepage/defrag 
echo never > /sys/kernel/mm/transparent_hugepage/enabled

7、接下来是选择安装服务:

测试采用了自定义服务,实际按工作环境来定咯~~

选择了HDFS、YARN、ZooKeeper

8、服务配置,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了)

9、接下来是数据库的设置,检查通过后就可以进行下一步的操作了

10、下面是集群设置的审查页面,都是保持默认配置的:

11、服务的安装过程大约半小时内就可以完成,安装完成后,就可以进入集群界面看一下集群的当前状况了。

5、脚本

(1)MySql建库&&删库

amon

create database amon      DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';

hive

create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';

oozie

create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';

安装hive:添加服务->Hive

安装Oozie:添加服务->Oozie

安装hue:添加服务->hue

安装impala:添加服务->impala

(2)启动

node2:

impala-shell

node3:

hive --service cli

udera-manager

scp -r /opt/cloudera-manager/* root@node2:/opt/cloudera-manager/
scp -r /opt/cloudera-manager/* root@node3:/opt/cloudera-manager/

(6)启动CM Server&Agent服务

cd /opt/cloudera-manager/cm-5.14.2/etc/init.d/

执行:

Server:

/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-server start

Agents:

/opt/cloudera-manager/cm-5.14.2/etc/init.d/cloudera-scm-agent start

Sever首次启动会自动创建表以及数据,不要立即关闭或重启,否则需要删除所有表及数据重新安装

访问:http://node1:7180,若可以访问(用户名、密码:admin),则安装成功。

Manager启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。

4、CDH5安装

1、CM Manager && Agent成功启动后,登录前端页面进行CDH安装配置。http://node1:7180

2、免费版本的CM5已经去除50个节点数量的限制。

3、各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点。选择要安装的节点,点继续。

4、接下来,出现以下包名,说明本地Parcel包配置无误,直接点继续就可以了。

CDH5.14.2-cdh5.14.2.p0.3

5、点击,继续,如果配置本地Parcel包无误,那么下图中的已下载,应该是瞬间就完成了,然后就是耐心等待分配过程就行了,大约10多分钟吧,取决于内网网速。

(若本地Parcel有问题,重新检查步骤三、5、创建Parcel目录)是否配置正确)

6、接下来是服务器检查,可能会遇到以下问题:

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。您可以继续进行安装,但可能会遇到问题,Cloudera Manager 报告您的主机由于交换运行状况不佳。以下主机受到影响:

通过 echo 0 > /proc/sys/vm/swappiness 即可解决。

echo never > /sys/kernel/mm/transparent_hugepage/defrag 
echo never > /sys/kernel/mm/transparent_hugepage/enabled

7、接下来是选择安装服务:

测试采用了自定义服务,实际按工作环境来定咯~~

选择了HDFS、YARN、ZooKeeper

8、服务配置,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了)

9、接下来是数据库的设置,检查通过后就可以进行下一步的操作了

10、下面是集群设置的审查页面,都是保持默认配置的:

11、服务的安装过程大约半小时内就可以完成,安装完成后,就可以进入集群界面看一下集群的当前状况了。

5、脚本

(1)MySql建库&&删库

amon

create database amon      DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';

hive

create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';

oozie

create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';

安装hive:添加服务->Hive

安装Oozie:添加服务->Oozie

安装hue:添加服务->hue

安装impala:添加服务->impala

(2)启动

node2:

impala-shell

node3:

hive --service cli

你可能感兴趣的:(hadoop,hdfs,大数据,hive,hbase)