HDFS集群+HBase+Flume+Sqoop+MySQL+Hive插件的搭建部署

安装linux环境

一、防火墙

1、关闭防火墙                                                CentOS7安装方法:

]# service iptables stop                                  systemctl stop firewalld.service

2、从开机启动项中关闭防火墙

]# chkconfig iptables off                                systemctl disable firewalld.service

3、查看防火墙状态

]# service iptables status                                systemctl status firewalld.service

4、查看防火墙的开机状态

]# chkconfig --list | grep iptables

//其余两台机器重复上述操作

二、主机名

]# vim /etc/sysconfig/network                        vim /etc/hostname

修改其中的host

HOSTNAME=node01                                             node01

HOSTNAME=node02                                             node02

HOSTNAME=node03                                             node03

2>修改网卡配置文件(配置静态的固定ip地址)

vim /etc/sysconfig/network-scripts/ifcfg-eth0    vim /etc/sysconfig/network-scripts/ifcfg-eth33

DEVICE=eth0

TYPE=Ethernet

ONBOOT=yes                                                                修改ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static                                                      修改BOOTPROTO=static

IPADDR=192.168.1.201                                                  新增IPADDR=192.168.1.201

NETMASK=255.255.255.0                                            新增NETMASK=255.255.255.0

GATEWAY=192.168.1.2                                                   新增GATEWAY=192.168.1.2

DNS1=114.114.114.114                                                    新增DNS1=114.114.114.114

选择手动manual                                                            

添加IP地址                                                                        

IPADDR:192.168.1.201                                                      

NetMask:255.255.255.0

GatWay:192.168.1.2

DNS: 8.8.8.8

配置域名映射:

]# vim /etc/hosts  //三台机器一摸一样                vim /etc/hosts  //三台机器一摸一样

192.168.1.201 node01                                            192.168.1.201 node01 

192.168.1.202 node02                                           192.168.1.202 node02

192.168.1.203 node03                                           192.168.1.203 node03

                      

同时在windows的域名映射文件C:/windows/System32/drivers/etc/hosts中加入:

192.168.1.201 node01

192.168.1.202 node02

192.168.1.203 node03

关闭selinux,否则会影响软件的正常使用:

vim /etc/selinux/config

设置selinux=disabled //三台机器同样改

1、修改linux的启动模式

vim /etc/inittab

将模式从5修改为3

id:5:initdefault:---》id:3:initdefault:

重启: reboot生效

        关机:poweroff  

-------------------------------------------------------------------------------------

四、在Linux下面安装jdk

6>卸载centeros自带的jdk(不卸载不稳定,有时会冲突)

rpm -qa|grep jdk

rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 --nodeps

前提:创建目录soft

[root@node01 opt]# mkdir soft

1、安装JDK

当前目录:/opt

1°、解压

opt]# tar -zxvf soft/jdk-8u112-linux-x64.tar.gz

2°、重命名:

opt]# mv jdk1.8.0_112/ jdk

3°、将JAVA_HOME配置到linux的环境变量里面:

vim /etc/profile.d/bigdata-etc.sh

加入以下内容:

export JAVA_HOME=/opt/jdk

export PATH=$PATH:$JAVA_HOME/bin

4°、让环境变量生效:

source /etc/profile.d/bigdata-etc.sh

5°、测试jdk是否安装成功:

java -version

---------------------------------

Hadoop轻松安装前提~>配置ssh免密码登录:

进入到我的home目录

cd ~/.ssh

ssh-keygen -t rsa

一路回车

执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免登陆的机器上(.ssh/id_rsa.pub)

ssh-copy-id -i root@node01

ssh-copy-id -i root@node02

ssh-copy-id -i root@node03

根据提示输入当前机器的密码

验证:ssh node01 不需要再输入密码

/*

在node02机器上进行上述操作,生成公钥跟私钥后

ssh-copy-id -i root@node01

ssh-copy-id -i root@node02

ssh-copy-id -i root@node03

在node03机器上进行上述操作,生成公钥跟私钥后

ssh-copy-id -i root@node03

*/

--------------------------------------------------------------------

将node01上面的jdk同步到node02和node03上面的/opt目录下面

通过scp远程拷贝的命令:

scp -r /opt/jdk root@node02:/opt/

scp -r /opt/jdk root@node03:/opt/

同时将环境变量文件也拷贝到node02和nonde03上面的/etc/profile.d目录下面

scp /etc/profile.d/bigdata.sh root@node02:/etc/profile.d/

scp /etc/profile.d/bigdata.sh root@node03:/etc/profile.d/

为了让node02和node03上面的jdk生效,执行以下动作

source /etc/profile.d/bigdata.sh

第二步:配置ZK,在node01上面进行配置,同步到其它两台机器(同步:scp 跨越多台机器拷贝)

1°、解压:tar -zxvf zookeeper-3.4.6.tar.gz

2°、在conf目录下copy   zoo.sample.cfg文件并改名为zoo.cfg

将dataDir修改为dataDir=/opt/zookeeper/data

新增如下内容

server.101=node01:2888:3888

server.102=node02:2888:3888

server.103=node03:2888:3888

server----》zk服务器

说明:

101/102/103 ---->zk集群中每一台zk的id标识

node01/2/3--->zk集群中的每一台zk的主机名或者ip地址

2888 ----->集群间各个server之间通信的端口

3888 ----->leader的通信端口

3°、在/opt/zookeeper目录下创建一个data目录,用于存放zk数据

4°、在data目录下绑定当前机器的zk-id(在myid下存储当前机器的唯一标识)

touch data/myid

将node01对应的zk-id添加进data/myid文件

echo  101 >  myid    或者  vim myid

5°、将node01配置好的整个目录拷贝到node02和node03中去

scp -r /opt/zookeeper root@node02:/opt

scp -r /opt/zookeeper root@node03:/opt

6°、根据在zoo.cfg中的配置,修改data/myid文件中的对应id值

其中node02----->102

其中node03----->103

6.1>添加环境变量  /etc/profile.d

export ZOOKEEPER_HOME=/opt/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

7°、分别在node01-node03的机器上面启动zk服务

zkServer.sh start

启动之后可以通过zkServer.sh status查看每一台zk的角色

有一个leader和两个follower

要达到的效果:

   ①在任意一台zookeeper server中,通过客户端连接,在其上手动创建一个znode,观察其余灵台server中是否出现了同样的znode

      zkCli.sh  -server  node01:2181

   ②这三台zookeeper server中,杀死leader所对应的进程,另外两台follower的server必然重新选举出新的leader,另外一台就是follower

  

---------------------------------------------------

1)、解压,重命名,添加环境变量

将文件上传到/opt/soft/hadoop-2.4.6.tar.bz

1.1,/#opt/  tar -zxvf soft/soft/hadoop-2.4.6.tar.bz

1.2, mv hadoop-2.4.6.tar.bz  hadoop

1.3, vim /etc/profile.d/bigdata-etc.sh

export HADOOP_HOME=/opt/hadoop

export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2)、配置

在/opt/hadoop下创建pid目录:mkdir /opt/hadoop/pid

hadoop-env.sh、yarn-env.sh、hdfs-site.xml、core-site.xml、mapred-site.xml、yarn-site.xml、slaves

1°、hadoop-env.sh ---->hadoop运行环境配置

修改JAVA_HOME

export JAVA_HOME=/opt/jdk

(pid目录是解决集群无法正常关闭hadoop no dataNode/namenode to stop)

export HADOOP_PID_DIR=/opt/hadoop/pid 
export HADOOP_SECURE_DN_PID_DIR=/opt/hadoop/pid

2°、yarn-env.sh ---->yarn的运行环境配置

修改JAVA_HOME

export JAVA_HOME=/opt/jdk
export YARN_PID_DIR=/opt/hadoop/pid     (hadoop no resourcemanager to stop)

3°、slaves ---->是datanode和nodemanager这些从节点的配置项

添加一下两行内容(就是一个datanode对应一个nodemanager,为的就是能够让nodemanager操作本地datanode中的数据,而尽量不要跨机器):

noede02

node03

4°, cd /opt/hadoop/etc/hadoop

vim hdfs-site.xml

<configuration>

<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->

<property>

<name>dfs.nameservices</name>

<value>ns1</value>

</property>

<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->

<property>

<name>dfs.ha.namenodes.ns1</name>

<value>nn1,nn2</value>

</property>

<!-- nn1的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.ns1.nn1</name>

<value>node01:9000</value>

</property>

<!-- nn1的http通信地址 -->

<property>

<name>dfs.namenode.http-address.ns1.nn1</name>

<value>node01:50070</value>

</property>

<!-- nn2的RPC通信地址 -->

<property>

<name>dfs.namenode.rpc-address.ns1.nn2</name>

<value>node02:9000</value>

</property>

<!-- nn2的http通信地址 -->

<property>

<name>dfs.namenode.http-address.ns1.nn2</name>

<value>node02:50070</value>

</property>

<!-- 指定NameNode的edits数据在JournalNode上的存放位置 -->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://node01:8485;node02:8485;node03:8485/ns1</value>

</property>

<!-- 指定JournalNode在本地磁盘存放数据的位置 -->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/opt/hadoop-repo/journal</value>

</property>

<property> 

<name>dfs.namenode.name.dir</name> 

<value>/opt/hadoop-repo/name</value> 

</property> 

<property> 

<name>dfs.datanode.data.dir</name> 

<value>/opt/hadoop-repo/data</value> 

</property>

<!-- 开启NameNode失败自动切换 -->

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

<!-- 配置失败自动切换实现方式 -->

<property>

<name>dfs.client.failover.proxy.provider.ns1</name>

<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>

</property>

<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->

<property>

<name>dfs.ha.fencing.methods</name>

<value>

   sshfence

   shell(/bin/true)

</value>

</property>

<!-- 使用sshfence隔离机制时需要ssh免登陆 -->

<property>

<name>dfs.ha.fencing.ssh.private-key-files</name>

<value>/root/.ssh/id_rsa</value>

</property>

<!-- 配置sshfence隔离机制超时时间 -->

<property>

<name>dfs.ha.fencing.ssh.connect-timeout</name>

<value>30000</value>

</property>

</configuration>

5°、配置core-site.xml

<configuration>

<!-- 指定hdfs的nameservice为ns1 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://ns1</value>

</property>

<!-- 指定hadoop临时目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/opt/hadoop-repo/tmp</value>

</property>

<!-- 指定zookeeper地址 -->

<property>

<name>ha.zookeeper.quorum</name>

<value>node01:2181,node02:2181,node03:2181</value>

</property>

</configuration>

6°、配置mapred-site.xml

<configuration>

<!-- mr依赖的框架名称 yarn-->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<!-- mr转化历史任务的rpc通信地址-->

<property> 

<name>mapreduce.jobhistory.address</name> 

<value>node02:10020</value> 

</property>

<!-- mr转化历史任务的http通信地址-->

<property> 

<name>mapreduce.jobhistory.webapp.address</name> 

<value>node02:19888</value> 

</property>

<!-- 会在hdfs的根目录下面创建一个history的文件夹,存放历史任务的相关运行情况-->

<property>

<name>yarn.app.mapreduce.am.staging-dir</name>

<value>/history</value>

</property>

<!-- map和reduce的日志级别-->

<property>

<name>mapreduce.map.log.level</name>

<value>INFO</value>

</property>

<property>

<name>mapreduce.reduce.log.level</name>

<value>INFO</value>

</property>

</configuration>

7°、配置yarn-site.xml

<configuration>

<!-- 开启RM高可靠 -->

<property>

   <name>yarn.resourcemanager.ha.enabled</name>

   <value>true</value>

</property>

<!-- 指定RM的cluster id -->

<property>

   <name>yarn.resourcemanager.cluster-id</name>

   <value>yrc</value>

</property>

<!-- 指定RM的名字 -->

<property>

   <name>yarn.resourcemanager.ha.rm-ids</name>

   <value>rm1,rm2</value>

</property>

<!-- 分别指定RM的地址 -->

<property>

   <name>yarn.resourcemanager.hostname.rm1</name>

   <value>node02</value>

</property>

<property>

   <name>yarn.resourcemanager.hostname.rm2</name>

   <value>node03</value>

</property>

<!-- 指定zk集群地址 -->

<property>

   <name>yarn.resourcemanager.zk-address</name>

   <value>node01:2181,node02:2181,node03:2181</value>

</property>

<property>

   <name>yarn.nodemanager.aux-services</name>

   <value>mapreduce_shuffle</value>

</property>

</configuration>

8°、拷贝在node01上面配置的hadoop文件

scp -r /opt/hadoop root@node02:/opt

scp -r /opt/hadoop root@node03:/opt

3)、启动Hadoop集群

确保在每一台机器上面都有其对应的数据保存的目录

mkdir /opt/hadoop-repo/journal

scp -r hadoop-repo/ root@node02:/opt/

scp -r hadoop-repo/ root@node03:/opt/

1°、确保zk集群是启动的

zkServer.sh status

2°、启动journalnode集群

启动命令hadoop-daemon.sh start journalnode

可以通过jps查看到多了一个进程JournalNode

3°、对namenode进行格式化                                          //只能格式一次,失败后会导致ID冲突  

在配置了NameNode机器中找一台,进行格式化,只格式化一次即可,

然后将生成的NameNode自身的元数据信息拷贝到另外一台NameNode的对应目录中区dfs.namenode.name.dir

在node01上面执行格式化:

hdfs namenode -format

将namenode元数据信息拷贝到node02上面去:

scp -r hadoop-repo/name/* root@node02:/opt/hadoop-repo/name/

4°、在namenode对应的任何一台机器上面格式化zkfc,目的在zk中创建维护namenode状态的目录

hdfs zkfc -formatZK

5°、分别启动hdfs和yarn

在node01上面执行如下命令:

start-dfs.sh

在node02上面执行如下命令:

start-yarn.sh

在node03上面执行如下命令:

yarn-deamon.sh start resourcemanager

以后再启动hadoop集群的时候:

先启动zk

然后启动hdfs,yarn和resourcemanager即可

注:/*

如果有各种原因造成namenode始终起不来,最有效的方法

方法一,

 hdfs namenode -bootstrapStandby,然后重新启动

方法二,

1,把进程全关掉

2,进入zookeeper客户端      zkCli.sh

3,查看客户端里的进程       ls /

4,删除进程里的hadoop-ha       delete /hadoop-ha/ns1/Active~  (tab补全) 

5,删除zookeeper/data下除myid其余全部同级文件

6,删除hadoop-repo

7,重新开启zookeeper集群,journalnode集群,格式化等等  

*/

----------------------------------------------------------------------

~~~>HBase分布式安装:

解压   opt]# tar -zxf soft/hbase-1.1.5-bin.tar.gz

重命名 opt]# mv hbase-1.1.5-bin hbase

添加至环境变量 export HBASE_HOME=/opt/hbase

       export PATH=$PATH:$HBASE_HOME/bin

配置 $HBASE_HOME/conf/hbase-env.sh、hbase-site.xml

$HBASE_HOME/conf/hbase-env.sh

export JAVA_HOME=/opt/jdk

export HBASE_MANAGES_ZK=false

注意:若是JDK1.8,需要在脚本文件【hbase-env.sh】注释掉下述两行配置信息:

# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+

export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m

   XX:MaxPermSize=128m"

$HBASE_HOME/conf/hbase-site.xml

<property>

<name>hbase.rootdir</name>

<value>hdfs://ns1/hbase</value>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name>

<value>node01,node02,node03</value>

</property>

再配置一个conf/regionservers,添加两行内容:

node02

node03

scp -r /opt/hbase root@node02:/opt

scp -r /opt/hbase root@node03:/opt

scp -r /etc/profile.d/bigdata-etc.sh root@node02:/etc/profile.d/

scp -r /etc/profile.d/bigdata-etc.sh root@node03:/etc/profile.d/

让脚本文件中的环境变量立即生效:

source /etc/profile.d/bigdata-etc.sh

启动hbase集群(前提:启动zookeeper~>hadoop集群)

sh $HBASE_HOME/bin/start-hbase.sh

-----------------------------------------------------------------------------------------------

~~~>Flume组件安装步骤:

解压缩:opt]# tar -zxvf soft/apache-flume-1.6.0-bin.tar.gz

重命名:opt]# mv apache-flume-1.6.0-bin flume

添加到环境变量中

vim /etc/profile

export FLUME_HOME=/opt/flume

export PATH=$FLUME_HOME/bin

修改配置文件(脚本文件,配置文件)后缀为.sh的是脚本文件,可以直接运行

conf]# cp flume-env.sh.template flume-env.sh

添加JAVA_HOME

    export JAVA_HOME=/opt/jdk

------------------------------------------------------------------------------------------------

sqoop安装:安装在一台节点上就可以了。

约定:安装目录为/opt/

下载之后上传sqoop到Linux,进行解压,

   tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/

重命名:

   mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop

  

配置SQOOP_HOME到环境变量中

  vim /etc/profile.d/bigdata-etc.sh

  export SQOOP_HOME=/opt/sqoop

  export PATH=$PATH:$SQOOP_HOME/bin

source   vim /etc/profile.d/bigdata-etc.sh

将数据库连接驱动拷贝到$SQOOP_HOME/lib里

因为SQOOP要连接rdbms,所以需要将该数据的驱动jar包添加进sqoop的classpath中,所以将mysql的jar包上传至$SQOOP_HONE/lib,

mysql需要mysql-connector-java-5.1.32.jar以上版本支持。

jdk1.7以上

配置$SQOOP_HOME/conf/sqoop-env.sh

   export HADOOP_COMMON_HOME=/opt/hadoop

   export HBASE_HOME=/opt/hbase

   export HIVE_HOME=/opt/hive

   export ZOOCFGDIR=/opt/zookeeper/conf

    ~~>SQOOP安装验证

sqoop list-databases --connect jdbc:mysql://node01:3306 --username 'root' --password 'root'

information_schema

hive

mydb2

mysql

test

--------------------------------------------------------------------------------------------------

安装方式一:安装MySQL(离线)

操作目录:/opt/soft --->安装包所在目录(客户端,服务器端,mysql驱动jar包)

1°、查询linux中已有的mysql依赖包

rpm -qa | grep mysql

2°、删除linux中已有的mysql依赖包(`:飘号,在tab键上面)

rpm -e --nodeps `rpm -qa | grep mysql`

3°、安装服务端和客户端

soft]# rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm

soft]# rpm -ivh MySQL-client-5.1.73-1.glibc23.x86_64.rpm

4°、启动mysql server服务

service mysql start

5°、加入到开机启动项(查看服务状态)

chkconfig mysql on

6°、进行用户名密码设置

mysql_secure_installation

7°、对远程可访问的机器进行授权

[root@node01 soft]# mysql -hnode01 -uroot -proot

在mysql服务器登录:mysql -uroot -proot

执行以下语句:

mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';

mysql> flush privileges;

-----------------------------------------------------------------------------------------------------

~~>Hive的安装:

将Mysql驱动包拷贝到lib目录下 (hive客户端会同时连接mysql数据库和HDFS)

将其他的安装包传到softwore目录下

1°、解压Hive文件:

       重命名,配置环境变量/etc/profile.d/bigdata.sh

       export HIVE_HOME=/opt/hive

       export PATH=$PATH:$HIVE_HOME/bin

       source /etc/profile.d/bigdata.sh

进入$HIVE_HOME/conf/修改文件

cp  hive-env.sh.template  hive-env.sh

cp  hive-default.xml.template  hive-site.xml

2°、修改$HIVE_HOME/conf的hive-env.sh,增加以下三行

export JAVA_HOME=/opt/jdk

export HADOOP_HOME=/opt/hadoop

export HIVE_HOME=/opt/hive

3°、修改$HIVE_HOME/conf/hive-site.xml

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8</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.querylog.location</name>

<value>/opt/hive/tmp</value>

</property>

<property>

<name>hive.exec.local.scratchdir</name>

<value>/opt/hive/tmp</value>

</property>

<property>

<name>hive.downloaded.resources.dir</name>

<value>/opt/hive/tmp</value>

</property>

4°、初始化hive元数据仓库

可以简写为:schematool -initSchema -dbType mysql

5°、启动hive

  opt]# hive

注意:如果提示

WARN: Establishing SSL connection without server’s identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn’t set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to ‘false’.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide...

这个问题其实不影响你的程序的使用。这个错误是因为新版本(5.5.45)之后要求连接mysql时是否使用SSL连接,一般设置不使用(false)即可,更改hive-site.xml里的元数据注册里useSSL=false就行

jdbc:mysql://node01:3306/hive239?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8

主要功能:

1)认证用户服务器确保数据发送确客户机服务器;
2)加密数据防止数据途窃取;
3)维护数据完整性确保数据传输程改变;

注:本文主要来自于学习笔记,如有侵权,请联系删除

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值