hadoop2.40+zookeeper3.4.6+Hbase0.98.6完全分布式集群环境搭建

 

 

 

 

准备工作

 

1.       修改Linux主机名

 

Vim /etc/sysconfig/network

 

添加 HOSTNAME=h1

 

2.       修改IP

 

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

 

修改IPADDR=192.168.137.11

 

3.       修改主机名和IP的映射关系

 

Vim /etc/hosts

 

添加192.168.137.11  h1

 

4.       关闭防火墙

 

 service iptables stop

 

5.       ssh免登陆

 

ssh-keygen t rsa //产生公钥和私钥

 

 

 

拷贝公钥到其他电脑(h2为主机名)

 

ssh-copy-id -i h2

 

6.       安装JDK,配置环境变量等

 

这里可以在一台电脑上配置,然后拷贝到其他电脑

 

scp –r /home/jdk/  h2:/home/

 

 

 

都做完可以重启一下电脑

 

 

 

 

 

安装zookeeper

 

解压 tar zxvf zookeeper-3.4.6.tar.gz

 

1.修改配置文件conf/ zoo_sample.cfg  zoo.cfg

 

mv zoo_sample.cfg zoo.cfg

 

打开修改内容:

 

dataDir=/home/gj/zookeeper-3.4.6/data  //数据目录,可随意定义

 

最后面添加:

 

server.1=h4:2888:3888

 

server.2=h5:2888:3888

 

server.3=h6:2888:3888

 

 

 

// server.X=A:B:C

 

其中X是一个数字, 表示这是第几号server.

 

A是该server所在的IP地址.

 

B配置该server和集群中的leader交换消息所使用的端口.

 

C配置选举leader时所使用的端口.

 

注意这里需要创建data文件夹

 

进入data文件夹创建文件myid  内容为1

 

1表示这是第几号server, server.X=A:B:C中的X对应

 

 

 

2.将配置到的zookeeper拷贝到其他电脑(h2,h3)上

 

使用 scp -r 命令

 

分别修改 myid文件内容为2,3

 

 

 

1.       启动三个节点的 bin目录下的./zkServer.sh start

 

也可以将zookeeper 配置到环境变量里面

 

 

 

安装hadoop

 

 

 

修改文件:

 

1.hadoop-env.sh

 

export JAVA_HOME=/usr/hadoop/jdk  //添加java环境

 

2.core-site.xml

 

 

 

<configuration>

 

 <!--指定hdfsnameservicens1-->

 

 <property>

 

   <name>fs.defaultFS</name>

 

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

 

 </property>

 

<!--指定hadoop数据存放目录-->

 

 <property>

 

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

 

   <value>/root/hadoop/hadoop-2.4.0/tmp</value>

 

 </property>

 

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

 

 <property>

 

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

 

   <value>h4:2181,h5:2181,h6:2181</value>

 

 </property>

 

</configuration>

 

 

 

 

 

2.       hdfs-site.xml

 

 

 

<configuration>

 

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

 

<property>

 

   <name>dfs.nameservices</name>

 

   <value>ns1</value>

 

</property>

 

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

 

<property>

 

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

 

   <value>nn1,nn2</value>

 

</property>

 

<!-- nn1RPC通信地址 -->

 

<property>

 

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

 

   <value>h1:9000</value>

 

</property>

 

<!-- nn1http通信地址 -->

 

<property>

 

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

 

        <value>h1:50070</value>

 

</property>

 

<!-- nn2RPC通信地址 -->

 

<property>

 

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

 

        <value>h2:9000</value>

 

</property>

 

<!-- nn2http通信地址 -->

 

<property>

 

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

 

        <value>h2:50070</value>

 

</property>

 

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

 

<property>

 

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

 

        <value>qjournal://h4:8485;h5:8485;h6:8485/ns1</value>

 

</property>

 

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

 

<property>

 

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

 

        <value>/root/hadoop/hadoop-2.4.0/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</value>

 

</property>

 

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

 

<property>

 

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

 

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

 

</property>

 

</configuration>

 

 

 

4. mapred-site.xml.template 重命名为mapred-site.xml

 

 

 

<configuration>

 

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

 

<property>

 

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

 

        <value>yarn</value>

 

</property>

 

</configuration>

 

 

 

5. yarn-site.xml

 

 

 

<configuration>

 

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

 

        <property>

 

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

 

                <value>h3</value>

 

        </property>

 

<!-- 指定nodemanager启动时加载server的方式为shuffle server -->

 

        <property>

 

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

 

                <value>mapreduce_shuffle</value>

 

        </property>

 

</configuration>

 

6.slaves

 

  h4

 

  h5

 

  h6

 

将在一台电脑上配置好的hadoop拷贝到其他电脑

 

 

 

启动hadoop  zookeeper(已配置到环境变量里面)

 

1.先启动zookeeperh4,h5,h6

 

  zkServer.sh start

 

 查看状态zkServer.sh status(会发现有一个leader,两个follower

 

2. 启动journalnode(h1上启动)

 

   hadoop-daemons.sh start journalnode

 

3.格式化HDFS(h1上启动)

 

hadoop namenode –format

 

此时会在hadoop目录里面产生tmp文件夹,将这个文件夹拷贝到h2

 

3.       格式化ZK(h1上启动)

 

hdfs zkfc –formatZK

 

4.       启动hadoop(h1上启动)

 

start-all.sh

 

此时可能在h3上的resourceManager没有启动,可以进入h3启动start-yarn.sh

 

这时就可以通过web查看hadoop集群的各个状态,也可以用jps 命令查看进程

 

 

 

hbase 集群配置

 

1.       conf/hbase-env.sh

 

java_home=java路径

 

export HBASE_MANAGES_ZK=false

 

使用独立的ZooKeeper时需要修改HBASE_MANAGES_ZK值为false,为不使用默认ZooKeeper实例。

 

 

 

2. conf/hbase-site.xml

 

 

 

<property>

 <name>hbase.rootdir</name>

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

</property>

<property>

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

 <value>true</value>

</property>

<property>

<name>hbase.master</name>

<value>h1:60000</value>

</property>

 <property>

 <name>hbase.master.port</name>

 <value>60000</value>

 <description>The port master should bind to.</description>

 </property>

 

 <property>

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

   <value>h4,h5,h6</value>

 </property>

 

 

 

3.conf/ regionservers

 

h4

 

h5

 

h6

 

 

 

启动hbase

 

h1

 

start-hbase.sh

 

h2

 

start-hbase.sh

 

 

 

这是可以通过web查看hbase的状态  ,会发现像namenode一样有一个Active 状态的hmasterStandby 状态的hmaster

 

 

 

至此完成集群。

你可能感兴趣的:(hadoop,zookeeper,hbase安装)