码迷,mamicode.com
首页 > 其他好文 > 详细

集群部署

时间:2016-04-18 20:20:31      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

集群部署

 

一、 软件版本信息.......................................................................................................... 1

二、 集群分布信息.......................................................................................................... 2

三、 虚拟机固定ip.......................................................................................................... 2

五、 配置config文件....................................................................................................... 5

六、 配置免密码登陆....................................................................................................... 6

七、 配置java环境.......................................................................................................... 7

八、 配置zookeeper......................................................................................................... 8

九、 配置hadoop............................................................................................................ 11

十、 启动hadoop集群.................................................................................................... 16

十一、 配置hbase.......................................................................................................... 17

十二、 配置hive............................................................................................................ 19

十三、 配置sqoop.......................................................................................................... 21

 

 

 

 

一、软件版本信息

 

1.zookeeper:zookeeper-3.4.7

2.hadoop:hadoop-2.7.1

3.hbase:hbase-1.1.2-bin

4.hive:apache-hive-1.0.1

5.sqoop:sqoop-1.4.6

6.jdk:jdk1.8.0_65

 

 

 

 

二、集群分布信息

 

 

 

三、虚拟机固定ip

 

1.vitrualbox 配置

在vitrualbox主页面点击管理按钮后找到全局设定,点击

 

出现如下图所示的小框

点击网络------>点击仅主机模式----->在右边点击+号,新建一个虚拟网卡。

回到vitrualbox主界面

右键点击你所创建的虚拟机(所有虚拟机都要),选择设置。

找到网络并点击,选择网卡2,勾选启动网络连接,连接方式选择仅主机模式,之后点击确定。(所有用来部署集群的机子都要这样子设置)

 

2.修改interface文件(每台机子都要)

分别进入每一台虚拟机,执行如下操作:

①sudo vi /etc/network/interfaces  回车

②按i键,在最后一行加入

auto eth1

iface eth1 inet static

address 192.168.56.101  //对应你要设置的静态ip

netmask 255.255.255.0  //子网掩码

③按esc,接着按shift+zz保存退出

④sudo reboot 重启虚拟机

按照以上步骤配置好每一台机子即可。

 

四、配置主机名与ip的映射关系

 

分别进入每台虚拟机执行如下步骤

①sudo vi /etc/hosts

②按2dd,删除文本最上面2行

③在文本最上面加入主机名与ip的映射关系

192.168.56.101      zwj1

192.168.56.102      zwj2

192.168.56.103      zwj3

192.168.56.104      zwj4

192.168.56.105      zwj5

192.168.56.106      zwj6

192.168.56.107      zwj7

④按esc,之后按shift +zz保存退出

 

五、配置config文件

 

①在zwj1的终端上输入:ssh-keygen -t rsa,之后连续按四下回车。

②输入cd:~/.ssh +回车

③输入touch config

④vi config

⑤在里面加入如下内容

Host zwj1

    user zwj1

Host zwj2

    user zwj2

Host zwj3

    user zwj3

Host zwj4

    user zwj4

Host zwj5

    user zwj5

Host zwj6

    user zwj6

Host zwj7

    user zwj7

保存退出

⑥将该配置文件复制到其他机子上,命令如下

scp config zwj2:~/.ssh   后回车输入zwj2的密码

scp config zwj3:~/.ssh   后回车输入zwj3的密码

scp config zwj4:~/.ssh   后回车输入zwj4的密码

scp config zwj5:~/.ssh   后回车输入zwj5的密码

scp config zwj6:~/.ssh   后回车输入zwj6的密码

scp config zwj7:~/.ssh   后回车输入zwj7的密码

 

六、配置免密码登陆

 

在每台机子上执行如下步骤

①ssh-keygen -t rsa,之后连续按四下回车。

②ssh-copy-id zwj1  输入zwj1密码

  ssh-copy-id zwj2  输入zwj2密码

  ssh-copy-id zwj3  输入zwj3密码

  ssh-copy-id zwj4  输入zwj4密码

  ssh-copy-id zwj5  输入zwj5密码

  ssh-copy-id zwj6  输入zwj6密码

  ssh-copy-id zwj7  输入zwj7密码

③验证免密码登陆

执行完以上步骤之后,可以使用ssh zwj1(任意一台虚拟机)+回车,如果不用输入密码就可以远程登陆的话,证明免密码登陆成功。

 

七、配置java环境

 

①在每台虚拟机的根目录上创建environment目录,并修改该目录的权限为777

sudo mkdir /environment

sudo chmod 777 /environment

②将jdk从实体机拷贝到每台虚拟机上(实体机也要先执行上面四、五两个步骤)

scp -r /environment/jdk zwj1:/environment

scp -r /environment/jdk zwj2:/environment

scp -r /environment/jdk zwj3:/environment

scp -r /environment/jdk zwj4:/environment

scp -r /environment/jdk zwj5:/environment

scp -r /environment/jdk zwj6:/environment

scp -r /environment/jdk zwj7:/environment

 

③在每台虚拟机上配置环境变量

sudo vi /etc/profile

在文件最下面加入如下环境变量

JAVA_HOME=/environment/jdk1.8.0_65 

export JAVA_HOME 

PATH=$PATH:$JAVA_HOME/bin 

export PATH 

CLASSPATH=.:$JAVA_HOME/lib 

export CLASSPATH

保存退出

之后终端输入

source /etc/profile +回车,使环境变量生效

 

八、配置zookeeper

 

①实体机子上解压zookeeper:

tar -zxvf zookeeper-3.4.7

②修改zookeeper conf目录下的配置文件

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

在文件中找到dataDir=/tmp/zookeeper。

③将光标移动该处,按i进入insert模式。将保存数据的路径更改为非tmp目录下(因为tmp目录下的内容机器重启之后就不见了),这里,本人将路径修改为dataDir=/environment/zookeeper/data

其他默认的配置基本无需修改,只需在该文件的最后一行增加集群配置内容(只需修改下面的主机名,与你自己部署zookeeper的服务器地址相同即可)

服务器编号,服务器地址,LF通信端口,选举端口                                           

server.1=zwj4:2888:3888                                         

server.2=zwj5:2888:3888                                          

server.3=zwj6:2888:3888

保存退出

③将修改好的zookeeper 拷贝到虚拟机上

scp -r /zk(zookeeper的路径)zwj4:/environmet

scp -r /zk(zookeeper的路径)zwj5:/environmet

scp -r /zk(zookeeper的路径)zwj6:/environmet

 

③在zk的虚拟机上创建data目录(zwj4-zwj6)

因为刚刚修改dataDir路径时的文件夹并不存在,所以要先创建该文件夹

sudo mkdir /environment/zookeeper/data

④创建myid文件(zwj4-zwj6)

cd /environment/zookeeper/data

touch myid

vi myid

在里面加入一个数字,对应上面server.1=zwj4:2888:3888

中sever后面的数字

(在zwj4上,myid文件里的内容为1

  在zwj5上,myid文件里的内容为2

  在zwj6上,myid文件里的内容为3)

⑤往环境变量中加入zookeeper的环境变量(zwj4-zwj6)

sudo vi /etc/profile

在最下面面加入

ZK_HOME=/environment/zookeeper/bin

PATH=$PATH:$ZK_HOME

export PATH

保存,退出。

source /etc/profile

⑥验证zk集群是否部署成功

在zwj4-zwj6上分别启动zk:

zkServer.sh start

之后查看zwj4-zwj6上面zk的状态

zkServer.sh status

可以看到三台中有一台的状态是

Mode: leader

其他两台的状态是

Mode: follower

证明zk集群部署成功。

 

九、配置hadoop

 

①在主机上解压hadoop

 tar -zxvf hadoop-2.7.1.tar.gz

②进入hadoop目录中的etc/hadoop目录下

③修改hadoop-env.sh

vi  hadoo-env.sh

在里面找到export JAVA_HOME=

将等号后面的值替换成虚拟机里面的java环境变量

如:export JAVA_HOME=/environment/jdk1.8.0_65

④修改core-site.xml

vi core-site.xml,将<configuration>替换成如下内容

<configuration>

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

                                   <property>

                                          <name>fs.defaultFS</name>

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

                                   </property>

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

                                   <property>

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

                                          <value>/enviroment/hadoop-2.7.1/tmp</value>

                                   </property>

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

                                   <property>

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

                                          <value>zwj4:2181,zwj5:2181,zwj6:2181</value>

                                   </property>

                                                                             

                            </configuration>

⑤修改hdfs-site.xml

vi 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>zwj1:9000</value>

       </property>

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

       <property>

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

              <value>zwj1:50070</value>

       </property>

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

       <property>

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

              <value>zwj2:9000</value>

       </property>

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

       <property>

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

              <value>zwj2:50070</value>

       </property>

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

       <property>

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

              <value>qjournal://zwj4:8485;zwj5:8485;zwj6:8485/ns1</value>

       </property>

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

       <property>

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

              <value>/enviroment/hadoop-2.7.1/journal</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>~/.ssh/id_rsa</value>

       </property>

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

       <property>

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

              <value>30000</value>

       </property>

 

       <property>

             <name>dfs.permissions</name>

             <value>false</value>

       </property>

</configuration>

⑥修改mapred-site.xml

vi mapred-site.xml

<configuration>

<!-- 指定mr框架为yarn方式 -->

       <property>

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

       <value>yarn</value>

       </property>

</configuration>

⑦修改yarn-site.xml

vi 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>zwj3</value>

                                          </property>

                                          <property>

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

                                             <value>zwj7</value>

                                          </property>

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

                                          <property>

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

                                             <value>zwj4:2181,zwj5:2181,zwj6:2181</value>

                                          </property>

                                          <property>

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

                                             <value>mapreduce_shuffle</value>

                                          </property>

</configuration>

⑧将配置好的hadoop拷贝到每台虚拟机上

scp -r /hadoop(hadoop所在目录) zwj1:/environment

scp -r /hadoop(hadoop所在目录) zwj2:/environment

scp -r /hadoop(hadoop所在目录) zwj3:/environment

scp -r /hadoop(hadoop所在目录) zwj4:/environment

scp -r /hadoop(hadoop所在目录) zwj5:/environment

scp -r /hadoop(hadoop所在目录) zwj6:/environment

scp -r /hadoop(hadoop所在目录) zwj7:/environment

⑨修改salves里面的内容(slaves是指定子节点的位置,因为要在zwj1上启动HDFS、在zwj3启动yarn,所以zwj1上的slaves文件指定的是datanode的位置,zwj3上的slaves文件指定的是nodemanager的位置)

将里面的内容替换成

zwj4

zwj5

zwj6

⑩配置hadoop的环境变量(zwj1-zwj7)

sudo vi /etv/profile

在最后面加入如下内容

export HADOOP_HOME=/environment/hadoop-2.7.1

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

 

十、启动hadoop集群

 

第一次启动的时候一定要严格按照下面的步骤来,之后启动只要启动hdfs跟yarn就可以

①启动zk(zwj4-zwj6都要)

启动命令:zkServer.sh start

②启动journalnode(zwj4-zwj6都要)

启动命令:hadoop-daemon.sh start journalnode

之后用jps命令检查,可以看到该机子的进程里多了一个JournalNode进程

③格式化HDFS(zwj1上执行)

hdfs namenode -format

④格式化zk(zwj1上执行)

hdfs zkfc -formatZK

⑤启动HDFS(zwj1上执行)

start-dfs.sh

⑥启动YARN(zwj3跟zwj7上执行)

start-yarn.sh

 

 

 

 

十一、配置hbase

 

①将hadoop集群的配置文件:hdfs-site.xml和core-site.xml 放到hbase的/conf目录下

②修改hbase-env.sh

找到export JAVA_HOME=,将后面的内容修改成你机子上java所在的目录

③修改hbase-site.xml

去掉里面所有原有的内容,加入如下配置

<configuration>

<!-- 指定hbase在HDFS上存储的路径 -->

        <property>

                <name>hbase.rootdir</name>

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

        </property>

<!-- 指定hbase是分布式的 -->

        <property>

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

                <value>true</value>

        </property>

<!-- 指定zk的地址,多个用“,”分割 -->

        <property>

        <name>hbase.zookeeper.quorum</name>        <value>itcast04:2181,itcast05:2181,itcast06:2181</value>

        </property>

</configuration>

       Vi backup-masters

④修改regionservers

去掉原有的localhost,将作为region的几个主机名写到里面:

zwj3

zwj4

zwj5

zwj6

⑤启动zookeeper集群(zwj4-zwj6)

zkServer.sh start

⑥启动dfs(zwj1)

start-dfs.sh

⑦启动hbase,在主节点(zwj1)上运行

start-hbase.sh

hbase集群配置成功的标识:

访问192.168.56.101:16010

页面正常显示,并且可以看到几台作为region的机子的状态,那么就是配置成功了。

 

十二、配置hive

 

①安装mysql(zwj4上面安装)

因为hive的元数据库基于mysql,所以要先安装mysql

sudo apt-get install mysql-server

安装过程中会提示设置密码,设置成你自己想要的密码即可,比如123123

安装完成之后,登陆mysql

mysql -u root -p+回车

输入安装过程中设置的密码

之后会出现:mysql>

这样的字符,表示登陆成功,此时输入:

grant all privileges on *.* to root@‘%‘ identified by ‘123123‘;+回车

给root设置可以远程登陆

输入flush privileges刷新刚刚的配置

输入exit退出mysql

在zwj4的终端输入 sudo vi /etc/mysql/my.cnf

找到bind-address = 127.0.0.1

在前面加上#号,注释掉该设置,到这里,mysql已经可以实现远程登陆的功能了。

②安装hive(zwj4)

解压hive: tar -zxvf apache-hive-1.0.1-bin.tar.gz

拷贝mysql的数据库连接驱动到hive的lib目录下

将hive-default.xml重命名为hive-site.xml

清空hive-site.xml里所有的内容,并加入以下

<configuration>

       <property>

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

         <value>jdbc:mysql://zwj3:3306/hive?createDatabaseIfNotExist=true</value>

         <description>JDBC connect string for a JDBC metastore</description>

       </property>

 

       <property>

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

         <value>com.mysql.jdbc.Driver</value>

         <description>Driver class name for a JDBC metastore</description>

       </property>

 

       <property>

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

         <value>root</value>

         <description>username to use against metastore database</description>

       </property>

 

       <property>

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

         <value>123123</value>

         <description>password to use against metastore database</description>

       </property>

</configuration>

配置成功的标识:进入hive的bin目录。./hive之后启动没有报错,最后出现hive>这样的字样,即表明hive启动成功。

 

十三、配置sqoop

 

解压sqoop到任意一台机子(zwj3),无需修改任何配置。

进入sqoop的bin目录,执行导出操作:

./sqoop import --connect jdbc:mysql://zwj4:3306/mysql --table user --username root --password 123123

执行成功的话证明配置没错。(此处连接的数据库必须先设置好允许远程登陆,且登陆的用户必须具有导出数据的权限)

 

集群部署

标签:

原文地址:http://www.cnblogs.com/zhj983452257/p/5405611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!