虚拟机搭建haddoop、zookeeper、hbase集群

时间:2022-07-16 08:28:33

·        在三台虚拟机搭建hbase集群 caiji

 

安装jdk

打开一个虚拟机,右键单击桌面选择Open in Terminal,进入编辑界面:

1.假设用户名是wxx(获取root权限)

(1)使wxx成为sudoer

       su 

       cd  /etc

       vi  sudoers

   i  进入编辑状态

   在root ALL=(ALL) ALL的下一行编辑

      wxx  ALL=(ALL) ALL

   按ESC

   按Shift + :

   输入wq!

 

(2)创建hadoop文件夹

cd

mkdir  hadoop

 

将jdk-7u79-linux-x64安装包复制到hadoop文件目录下(与windows环境下类似)。

(3)解压jdk-7u79-linux-x64.gz文件

cd

cd  hadoop

tar  -zxvf  jdk-7u79-linux-x64.gz

 

(4)设置jdk环境变量

cd

cd  hadoop

su

gedit  /etc/profile

 

进入后在最后一行添加以下指令:

exportJAVA_HOME=/home/wxx/hadoop/jdk1.7.0_79

exportPATH=$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

点击保存后关闭,输入以下指令使jdk生效:

source  /etc/profile

 

(5)检查jdk是否安装成功

java  -version

成功后显示如下信息:

java version"1.7.0_79"

Java(TM) SE RuntimeEnvironment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit ServerVM (build 24.79-b02, mixed mode)

 

 

四、创建集群

1.克隆虚拟机

将已经安装好jdk的虚拟机克隆两个,创建三个虚拟机的集群。

2.修改后hostname

su

vi  /etc/sysconfig/network

 

将三个虚拟机分别命名masterslave1slave2

如图:(完成后重启虚拟机reboot)

3.将三个虚拟机的ip地址相互连接

首先必须确保虚拟机联网,如果NET模式连不上网,则选中桥接模式。

网络通畅后执行以下操作:

(1)分别对三个虚拟机执行指令ifconfig,查看各虚拟机ip地址

(2)在master中执行以下指令

su

cd  /etc

gedit  /etc/hosts

进入编辑界面后按“IP地址   hostname”填写信息,如图:

填写完后按Save按钮,关闭编辑页。

(3)将配置好的文件复制到slave1、slave2中

在master中执行以下指令:

scp  /etc/hosts  root@slave1:/etc/

scp  /etc/hosts  root@slave2:/etc/

 

(4)检查各虚拟机是否互联

在master中执行以下指令:

ping  slave1

ping  slave2

连通后显示如下:

 虚拟机搭建haddoop、zookeeper、hbase集群

 4.配置SSH无密钥登录

(1)关闭防火墙

对每个虚拟机进行如下操作:

su

chkconfig  iptables  off

执行后重启虚拟机: reboot

(2)关闭防火墙后在master下执行以下指令:

cd

ssh-keygen  –t  rsa

cd  .ssh

cat  id_rsa.pub >>  authorized_keys

chmod  600 authorized_keys

scp  authorized_keys  wxx@slave1:~/.ssh/

scp  authorized_keys  wxx@slave2:~/.ssh/

(3)检查无密钥登录是否成功

ssh  slave1

ssh  slave2

ssh  master

成功后显示如下:

 虚拟机搭建haddoop、zookeeper、hbase集群

5.安装并配置hadoop-2.6.4(在master中)

(1)将hadoop-2.6.4.tar.gz安装包复制到hadoop文件目录下(与windows环境下类似)。

(2)解压hadoop-2.6.4.tar.gz

cd

cd  hadoop

tar  -zxvf  hadoop-2.6.4.tar.gz

(3)配置hadoop-2.6.4的各项文件

cd

cd  hadoop/hadoop-2.6.4

cd  etc/hadoop

gedit  hadoop-env.sh     

在最后一行添加:export JAVA_HOME=/home/wxx/hadoop/jdk1.7.0_79

gedit  core-site.xml

添加代码:

<property>

       <name>fs.default.name</name>

       <value>hdfs://master:9000</value>

        <final>true</final>

    </property>

    <property>

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

        <value>/home/wxx/hadoop/tmp</value>

    </property>

    <property>

       <name>ds.default.name</name>

       <value>hdfs://master:54310</value>

        <final>true</final>

</property>

 

gedit  hdfs-site.xml

添加代码:

<property>

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

   <value>file:/home/wxx/hadoop/dfs/name</value>

   <final>true</final>

</property>

<property>

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

   <value>file:/home/wxx/hadoop/dfs/data</value>

   <final>true</final>

</property>

<property>        

   <name>dfs.replication</name>

   <value>2</value>

</property>

 

gedit  mapred-site.xml

(注意:必须先复制mapred-site.xml.template文件更名为mapred-site.xml

添加代码:

<property>

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

    <value>yarn</value>

</property>

<property>

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

    <value>master:10020</value>

</property>

<property>

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

    <value>master:19888</value>

</property>

 

gedit  yarn-site.xml

添加代码:

<property>

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

   <value>mapreduce_shuffle</value>

</property>

<property>

       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

   <value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property> 

<property>

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

    <value>master</value>

</property>

<property>

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

    <value>master:8032</value>

</property>

<property>

   <name>yarn.resourcemanager.scheduler.address</name>

    <value>master:8030</value>

</property>

<property>

   <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>master:8031</value>

</property>

<property>

   <name>yarn.resourcemanager.admin.address</name>

    <value>master:8033</value>

</property>

<property>

   <name>yarn.resourcemanager.webapp.address</name>

    <value>master:8088</value>

</property>

gedit  master

添加代码:

master

 

gedit  slaves

添加代码:

master

slave1

slave2

 

(4)将配置好的文件复制到slave1、slave2中

cd

cd  hadoop

scp  -r  hadoop-2.6.4 slave1:~/hadoop

scp  -r  hadoop-2.6.4  slave2:~/hadoop

 

(5)启动集群

cd

cd  hadoop/hadoop-2.6.4

 

bin/hdfs  namenode  -format    

  // 格式化namenode

sbin/start-dfs.sh         //如果不能执行就是权限问题需要给安装目录开通权限 

sbin/start-yarn.sh

 

sbin/hadoop-daemon.sh  start  secondarynamenode

 

(6)检查集群情况

jps (master 出现这几个说明安装成功!!!)

 虚拟机搭建haddoop、zookeeper、hbase集群

jps(slave1、slave2 出现一下出现下图)

 虚拟机搭建haddoop、zookeeper、hbase集群

1、先安装zookeeper,再安装hbase,重中之重是先把三个主机的防火墙关掉,不然你会发现怎么都搞不定的;

       root账户下,

       service iptables stop(关闭防火墙立即生效,但重启后无效)

       chkconfig iptables off(关闭防火墙重启生效,但不会立即生效)

       建议两条命令都执行一遍,当然之前关过的,不必担心了。

2、tar -zxvf zookeeper-*.gz(*是版本号,自己补齐) ,

       然后在conf目录下,

1)     cp zoo-simple.cfg zoo.cfg

2)     mkdirdata

3)     touchdata/myid  (myid文件里写上server序号)

4)     gedit zoo.cfg

dataDir=/home/cc/hadoop/zookeeper-3.4.9/data/ (安装目录      

     在尾部添加三行:

       server.0=master:2888:3888

       server.1=slave1:2888:3888

       server.2=slave2:2888:3888

 

       这里的2888是leader的port,3888是follower的port。可以是其他值。

       5)然后

              #scp -r ~/zookeeper-*slave1:~/hadoop

              scp -r ~/zookeeper-3.4.9slave1:~/hadoop

              #scp -r ~/zookeeper-*slave2:~/hadoop

              scp -r ~/zookeeper-3.4.9slave2:~/hadoop

       6)需要在/home/cc/hadoop/zookeeper-3.4.9/data/myidmyid是新建的


       master里面myid0

       slave1里面myid1

       slave2里面myid2

      

3、安装hbase,

       tar -zxvf hbase-*.gz,

      

       ①在conf/hbase-env.sh中,添加

       export JAVA_HOME=/home/cc/hadoop/jdk1.8.0_121/(你的JDK目录)还有

       export HBASE_MANAGES_ZK=false

       这句话的意思是不使用hbase自带的zookeeper,其实这两句话

       都是有的,被注释了,但取值可能是不一样的;

       ②在conf/hbase-site.xml

       configuration标签之间添加如下代码:

         

       <property>

          <name>hbase.rootdir</name>

 

          <value>hdfs://master:9000/hbase</value>

                <!--hbase目录的位置,打开之后,你会发现eclipsehadoop目录里边多了个hbase目录-->

 

         </property>

 

         <property>

 

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

 

           <value>true</value>

                <!--分布式集群-->

 

         </property>

 

         <property>

 

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

 

          <value>master:2181,slave1:2181,slave2:2181</value>

                <!--这是集群里边的机器-->

 

         </property>

 

         <property>

 

          <name>dfs.replication</name>

 

           <value>1</value>

                <!---->

 

         </property>

 

       ③在conf/regionservers文件里边写入

 

       master

       slave1

       slave2

 

两个从属机的名称,这个是连接远程服务器的名单,因为,我们一般是在master上开启hbase的,要远程连接另外两台的。

       ④同样的

              #scp -r ~/hbase-* slave1:~/hadoop

              scp -r hbase-1.2.5 slave1:~/hadoop

              #scp -r ~/hbase-* slave2:~/hadoop

              scp -r hbase-1.2.5 slave2:~/hadoop

       (注意替换)

 

!!!配置zookeeperhbasePATH

       vi /etc/profile(3个虚拟机一起添加

       添加

exportJAVA_HOME=/home/cc/hadoop/jdk1.8.0_121

exportPATH=$JAVA_HOME/bin:$PATH

exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

exportHADOOP_HOME=/home/cc/hadoop/hadoop-2.6.5/

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

exportZOOKEEPER_HOME=/home/cc/hadoop/zookeeper-3.4.9/

exportPATH=$ZOOKEEPER_HOME/bin:$PATH

exportHBASE_HOME=/home/cc/hadoop/hbase-1.2.5/

exportPATH=$HBASE_HOME/bin:$PATH

 

       scp -r  /etc/profile  slave1:/etc/profile

       scp -r   /etc/profile   slave2:/etc/profile

 

source   /etc/profile

重启

 

4、启动集群,启动顺序hadoop->zookeeper->hbase

      

 

 

       1start-all.sh(启动hadoop集群)

       2zkServer.sh start(每台机器都要执行该命令)然后你可以查看

             zkServer.sh status  (会显示是leader还是follower,(我的是slave1是leader,哪个是leader不要紧的)然后执行

            // zkCli.sh  -server master:2181,slave1:2181,slave2:2181(2181是zookeeper的监听端口)

       3start-hbase.sh   (可能要等上一分钟

       4jps

       出现:

       3650 DataNode

       3986 ResourceManager

       3812 SecondaryNameNode

       4421 QuorumPeerMain

       4744 Jps

       3544 NameNode

       4571 HMaster

       4700 HRegionServer

       4094 NodeManager

       5hbaseshell

       出现:(成功!!!)

2017-04-1719:29:25,502 WARN  [main]util.NativeCodeLoader: Unable to load native-hadoop library for your platform...using builtin-java classes where applicable

SLF4J:Class path contains multiple SLF4J bindings.

SLF4J:Found binding in[jar:file:/home/cc/hadoop/hbase-1.2.5/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:Found binding in[jar:file:/home/cc/hadoop/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J:See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J:Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

HBaseShell; enter 'help<RETURN>' for list of supported commands.

Type"exit<RETURN>" to leave the HBase Shell

Version1.2.5, rd7b05f79dee10e0ada614765bb354b93d615a157, Wed Mar 1 00:34:48 CST 2017

 

hbase(main):001:0>