hadoop2.4.0+zooker3.4.5+hbase0.98.9分布式集群搭建

来源:互联网 发布:谢云流正太捏脸数据 编辑:程序博客网 时间:2024/06/06 07:06

一、下载需要的工具包

jdk-7u67-linux-x64.tar.gzapache-maven-3.0.5-bin.tar.gzcmake-2.8.12.1.tar.gz

hadoop-2.4.0.tar.gzprotobuf-2.5.0.tar.gzhbase-0.98.9-hadoop2-bin.tar.gz,zookeeper-3.4.5.tar.gz,apache-hive-0.13.1-bin.tar.gz(注:hadoophbasezookeeperhive之间都是有版本要求的,如果版本不匹配会,在安装过程会出现问题)

二、linux基础环境配置

1.配置集群hosts列表

vi  /etc/hosts

添加如下内容:

10.21.16.47master localhost

10.21.16.48node1

10.21.16.49node2

10.21.16.50node3

2.配置4台服务器时间同步

命令:date  –s  ‘2015-01-2921:10:34’

3.配置4台服务器主机名

vi  /etc/sysconfig/network

47服务器为: HOSTNAME=master  其他3台服务器主机名依次为node1,node2,node3  

配置完后重启服务器,命令为reboot

4.创建用户

分别在4台服务器上创建用户hadoop

 useradd hadoop

passwd hadoop

三、Hadoop相关工具安装

1.安装JDK

进入jdktar包目录:cd /opt

解压tar包到指定目录:tar –zxvf  jdk-7u67-linux-x64.tar.gz -C  /usr/lib/

打开环境变量文件: vi  /etc/profile

添加如下信息:

export JAVA_HOME=/usr/lib/jdk1.7.0_67

     exportPATH=${JAVA_HOME}/bin:$PATH

重新加载环境变量文件:source  /etc/profile

检查是否安装成功:java -version     

2.安装maven

进入maventar包目录:cd /opt

解压tar包到指定目录:tar  -zxvf  apache-maven-3.0.5-bin.tar.gz  -C  /usr

打开环境变量文件: vi  /etc/profile

添加如下信息:

export M2_HOME=/usr/apache-maven-3.0.5

     exportM2_HOME

     exportPATH=${M2_HOME}/bin:$PATH

重新加载环境变量文件:source  /etc/profile

检查是否安装成功:mvn -version

3.安装cmake

进入cmaketar包目录:cd /opt

解压tar包到指定目录:tar - zxvf  cmake-2.8.12.1.tar.gz -C  /usr

进入cmake目录:cd  /usr/cmake-2.8.12.1

./configure

make

make install

4.安装protobuf

进入protobuftar包目录:cd /opt

解压tar包到指定目录:tar  -zxvf  protobuf-2.5.0.tar.gz  –C  /usr

进入protobuf目录:cd  /usr/protobuf-2.5.0

./configure --prefix=/root/protobuf

make

make install

打开环境变量文件: vi /etc/profile

添加如下信息:

exportPATH=$PATH:/root/protobuf/bin

exportPKG_CONFIG_PATH=/root/protobuf/lib/pkgconfig

重新加载环境变量文件:source  /etc/profile

5.安装hadoop

进入hadooptar包目录:cd/opt

解压tar包到指定目录:tar  -zxvf  hadoop-2.4.0.tar.gz  -C  /home/hadoop

打开环境变量文件: vi /etc/profile

添加如下信息:

export HADOOP_HOME=/home/hadoop/hadoop-2.4.0

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

重新加载环境变量文件:source  /etc/profile

授权:chown –R hadoop:hadoop /home/hadoop

检查是否安装成功:hadoop version

四、集群模式启动

启动前需要做些基本的设置

1.配置datanodetasktracker的地址

vi  /home/hadoop/hadoop-2.4.0/etc/hadoop/slaves

添加如下内容:

master

node1

node2

node3

2.免登陆模式(前提必须安装ssh,检查是否安装ssh:ssh localhost,如果显示登录时间则表示安装成功,一般已经自带安装好了)

切换到hadoop用户下

su  hadoop

cd/home/hadoop

生成公钥和私钥

ssh-keygen -q -t rsa -N "" -f /home/hadoop/.ssh/id_rsa 

说明:这个命令会产生一个公钥(/home/hadoop/.ssh/id_dsa.pub)和密钥(/home/hadoop/.ssh/id_dsa

查看密钥内容

cd /home/hadoop/.ssh

cat id_rsa.pub

复制id_rsa.pub公钥到 authorized_keys 目录

cat id_rsa.pub > authorized_keys

把 master 机器上的 id_dsa.pub 文件 copy 到 node1,node2,node3 节点上(node1,node2,node3必须已经装好上面的那些工具,可以把master上装好的工具直接copy过去)。

如copy到node1上:  scp /home/hadoop/.ssh/ id_dsa.pub  hadoop@10.21.16.47:/home/hadoop/.ssh/

注意:如果报找不到目的主机的.ssh目录,则手动建立该目录

在node1,2,3上分别执行cat id_rsa.pub > authorized_keys

验证无密码登陆:

ssh  master  如果显示登陆则成功

ssh node1  如果显示登陆则成功,node2,node3也是如此

3.修改${HADOOP_HOME}/etc/hadoop/hadoop-env.sh文件中JAVA_HOME的地址(注:凡是安装目录在hadoop目录下的都授权给hadoop用户,执行相关操作时都切换到hadoop用户下执行,否则其他用户无权进行修改,只有查看的权限,因为已经把权限赋予hadoop用户):

export  JAVA_HOME=/usr/lib/jdk1.7.0_67

4.设置hadoop的配置参数(${HADOOP_HOME}/etc/hadoop/core-site.xml${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

core-site.xml:
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>

hdfs-site.xml

 <configuration>

 <property>

   <name>dfs.replication</name>

   <value>3</value>

   <description>HDFS数据保存份数,通常是3</description>

 </property>

 <property>

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

   <value>/home/hadoop/hdfs/name1,/home/hadoop/hdfs/name2</value>

   <description>HDFS namenode image 文件保存地址</description>

 </property>

 <property>

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

   <value>/home/hadoop/hdfs/data1,/home/hadoop/hdfs/data2</value>

   <description>HDFS数据文件 存储路径,可以配置多个不同的分区和磁盘中,使用,号分隔</description>

 </property>

 <property>

   <name>dfs.datanode.failed.volumes.tolerated</name>

   <value>1</value>

 </property>

</configuration>

注:在/home/hadoop/hdfs下新建data1,data2,name1,name2目录

5.至此,上面所有安装配置都通过scp命令copy到node1,node2,node3上

6.第一次启动文件系统前需格式化文件系统,即通过hadoopnamenode –format或hdfsnamenode –format

7.使用start-dfs.sh来启动hdfs服务,使用jps来看hdfs的进程是否启动:

[hadoop@master hadoop]#jps

5782 NameNode
5897 DataNode
6168 Jps
6046 SecondaryNameNode

如果没有DataNode进程,则使用stop-dfs.sh停掉hdfs服务,将data1,data2,name1.name2目录全部清空,再次格式化文件系统,即hadoop namenode –format或hdfs namenode –format,使用start-dfs.sh启动hdfs服务。
再通过web界面来查看下namenode是否正常启动.默认地址:NameNode- http://10.21.16.47:50070/
如果无法打开,可能是由于防火墙是开着的.关闭防火墙.service iptables stop。

8. 可以通过hadoop如下命令来测试hdfs是否可用:
[hadoop@master hadoop]# hadoop fs -ls /
[hadoop@master hadoop]# hadoop fs -mkdir /zl
[hadoop@master hadoop]# hadoop fs -mkdir /zl
mkdir: `/zl': File exists
[hadoop@master hadoop]# hadoop fs -ls /zl
[hadoop@master hadoop]# hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2015-01-2922:23 /zl
可以导入数据到文件系统
[hadoop@master hadoop]# hdfs dfs -put hadoop/ /zl/input
[hadoop@master hadoop]# hdfs dfs -ls /zl/input
Found 25 items
-rw-r-r-   1 hadoop supergroup      3589 2015-01-29 22:23 /zl/input/capacity-scheduler.xml
-rw-r-r-   1 hadoop supergroup      1335 2015-01-29 22:23 /zl/input/configuration.xsl

9.配置mapreduce(${HADOOP_HOME}/etc/hadoop/mapred-site.xml, ${HADOOP_HOME}/etc/hadoop/yarn-site.xml)

由于没有mapred-site.xml文件,所以需要copy一份

cp  yarn-site.xml mapred-site.xml

mapred-site.xml:
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
yarn-site.xml:
<configuration>
    <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>
</configuration>

10.启动或停止yarn

sbin/start-yarn.sh

sbin/stop-yarn.sh

通过web浏览器来查看下yarn状态:ResourceManager- http://10.21.16.47:8088/

11.测试

hadoop jar  /home/hadoop/hadoop-2.4.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jargrep /zl/input /zl/output3/ 'dfs[a_z.]+'
在未启动yarn模式下,也是可以运行上面命令得出结果,未启动yarn模式,采用的是默认的mrv1来执行的.
配置了yarn并启动了yarn,则采用了yarn来运行上面的任务的.

五、Zookeeper的安装

1.进入zookeepertar包目录:cd /opt

2.解压tar包到指定目录:tar -zxvf  zookeeper-3.4.5.tar.gz -C  /home/hadoop

3.进入zookeeperconf目录:cd /home/hadoop/ zookeeper-3.4.5/conf

4.修改配置文件zoo_sample.cfgzoo.cfgmv  zoo_sample.cfg  zoo.cfg

5.修改zoo.cfg配置文件内容:dataDir=/home/hadoop/zookeeper-3.4.5/data  //数据目录可随意定义,如果这样定义,需在zookeeper-3.4.5目录下新建data目录

6.zoo.cfg最后添加如下内容:

server.1=master:2888:3888

server.2=node1:2888:3888

server.3=node2:2888:3888

server.4=node3:2888:3888

说明:server.X=A:B:C

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

A是该server所在的IP地址.

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

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

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

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

8.将配置到的zookeeper拷贝到其他服务器主机上(node1,node2,node3)上

使用 scp -r 命令

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

9.启动4个结点的bin目录下的./zkServer.sh start

由于启动时,每个节点都会试图去连接其它节点,因此先启动的刚开始会连接不上其它的,导致日志中会包含错误信息,在未全启动之前,这个属正常现象。

10.安装验证

脚本zkServer.sh不但可以用来启动ZooKeeper,还可以用来查看状态:  ./zkServer.shstatus

如遇到以下错误,请稍安勿躁,过会再试,可能是因为还未完全起来:

[hadoop@master ~/ zookeeper-3.4.5/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home/hadoop/ zookeeper-3.4.5/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

集群成功启动后,将有且只会有一个成为leader,其它是follower

[hadoop@ master ~/ zookeeper-3.4.5/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home/hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: leader

 

[hadoop@ node1 ~/ zookeeper-3.4.5/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home/hadoop/zookeeper-3.4.5/bin/../conf/zoo.cfg

Mode: follower

 

[hadoop@ node2 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home /hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: follower

 

[hadoop@ node3 ~/zookeeper/bin]$ ./zkServer.sh status

JMX enabled by default

Using config: /home /hadoop/zookeeper/bin/../conf/zoo.cfg

Mode: follower

11 基本命令

进入ZooKeeperbin目录,执行zkCli.sh进入ZooKeeper的命令行操作界面。

./zkCli.sh -server 10.21.16.47:2181

 

参数“-server中只含一个“-”,用以指定被连接的ZooKeeper节点,可以为Leader,也可以为Follower“10.21.16.47”LeaderFollowerIP或主机名,“2181”ZooKeerp提供的客户端服务端口。

 

进入ZooKeeper命令行操作界面后,输入help然后回车,可以看到ZooKeeper支持的命令列表:

[zk: DEVNET-154-79:2181(CONNECTED) 0] help

ZooKeeper -server host:port cmd args

        stat path [watch]

        set path data [version]

        ls path [watch]

        delquota [-n|-b] path

        ls2 path [watch]

        setAcl path acl

        setquota -n|-b val path

        history

        redo cmdno

        printwatches on|off

        delete path [version]

        sync path

        listquota path

        rmr path

        get path [watch]

        create [-s] [-e] path data acl

        addauth scheme auth

        quit

        getAcl path

        close

        connect host:port

 

“ls”有点像HDFS中的“ls”,随便测试下:

[zk: DEVNET-154-79:2181(CONNECTED) 1] ls /

[zookeeper, hbase]

 

再测试下:

[zk: DEVNET-154-79:2181(CONNECTED) 2] ls /hbase

[replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, region-in-transition, online-snapshot, master, running, recovering-regions, draining, namespace, hbaseid, table]

 

再测试一下:

[zk: DEVNET-154-79:2181(CONNECTED) 4] ls /hbase/backup-masters

[VM-40-171-sles10-64,60000,1398162436871]

六、Hbase的安装

1.进入zookeepertar包目录:cd /opt

2.解压tar包到指定目录:tar -zxvf  hbase-0.98.9-hadoop2-bin.tar.gz -C  /home/hadoop

3.修改环境变量:vi /etc/profile

exportHBASE_HOME=/home/hadoop/hbase-0.98.9-hadoop2

exportPATH=${HBASE_HOME}/bin:$PATH

4.重新加载环境变量文件: source  /etc/profile

5.进入conf目录修改hbase-env.sh文件:

cd  /home/hadoop/hbase-0.98.9-hadoop2/conf

vi  hbase-env.sh

exportJAVA_HOME=/usr/lib/jdk1.7.0_67

export HBASE_MANAGES_ZK=false

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

6.修改conf/hbase-site.xml

<configuration>

 <property>

  <name>hbase.rootdir</name>

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

 </property>

 <property>

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

  <value>true</value>

 </property>

 <property>

  <name>hbase.master</name>

  <value>master:60000</value>

 </property>

 <property>

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

 <value>60000</value>

 </property>

 <property>

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

  <value>master,node1,node2,node3</value>

 </property>

</configuration>

7.修改conf/regionservers文件,添加如下内容:

master

node1

node2

node3

8.在4个结点上启动hbase:  start-hbase.sh

9.安装测试

[root@masterconf]# hbase shell

2015-01-2923:13:27,343 INFO  [main]Configuration.deprecation: hadoop.native.lib is deprecated. Instead, useio.native.lib.available

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

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

Version0.98.9-hadoop2, r96878ece501b0643e879254645d7f3a40eaf101f, Mon Dec 15 23:00:20PST 2014

 

hbase(main):001:0>version

0.98.9-hadoop2,r96878ece501b0643e879254645d7f3a40eaf101f, Mon Dec 15 23:00:20 PST 2014

如果能出现上面信息,说明安装成功!

七、hive的安装

1.进入hivetar包目录:cd /opt

2.解压tar包到指定目录:tar -zxvf  apache-hive-0.13.1-bin.tar.gz -C  /home/hadoop

3.修改环境变量:vi /etc/profile

export HIVE_HOME=/home/hadoop/apache-hive-0.13.1-bin

export PATH=${HIVE_HOME}/bin:$PATH

exportCLASSPATH=${HIVE_HOME}/lib:$CLASSPATH

4.重新加载环境变量文件: source  /etc/profile

5.进入hive目录复制3个配置文件

cd/home/hadoop/apache-hive-0.13.1-bin/conf

cp hive-env.sh.templatehive-env.sh

cp hive-log4j.properties.templatehive-log4j.properties

cp hive-default.xml.templatehive-site.xml

6.修改hive-env.sh配置文件,内容如下:

vi  hive-env.sh

export  HADOOP_HOME=/home/hadoop/hadoop-2.4.0

exportHIVE_CONF_DIR=/home/hadoop/apache-hive-0.13.1-bin/conf

export HIVE_AUX_JARS_PATH=/home/hadoop/apache-hive-0.13.1-bin/lib

7.修改hive-log4j.properties配置文件

vi  hive-log4j.properties

log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter

如果没有修改则会出现如下信息:

WARNING:org.apache.hadoop.metrics.EventCounteris deprecated

please useorg.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files;

8.修改hive-site.xml配置文件

<configuration>

 <property>

 <name>hive.metastore.warehouse.dir</name>

 <value>hdfs://master:9000/usr/hive/warehouse</value>

  <description>数据目录</description>

 </property>

 <property>

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

 <value>hdfs://master:9000/usr/hive/tmp</value>

  <description>临时文件目录</description>

 </property>

 <property>

 <name>hive.querylog.location</name>

  <value>hdfs://master:9000/usr/hive/log</value>

  <description>日志文件目录</description>

 </property>

  <property>

  <name>hive.metastore.local</name>

  <value>false</value>

 </property>

 <property>

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

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

  <description>设置元数据连接字串</description>

 </property>

 <property>

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

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

 </property>

 <property>

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

  <value>hive</value>

  <description>设置hive存放的元数据的数据库的用户名称</description>

 </property>

 <property>

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

  <value>hive</value>

  <description>设置用户登录数据库时的密码</description>

 </property>

 <property>  

   <name>hive.metastore.uris</name> 

   <value>thrift://10.21.16.47:9083</value>

    <description>metastore配置到远程机器上</description> 

   </property>

</configuration>

9.使用hadoop创建相应的我呢缉拿路径,并且要为它们设定权限:

hdfs  dfs  –mkdir  –p /usr/hive/warehouse

hdfs  dfs -mkdir  -p  /usr/hive/tmp

hdfs  dfs -mkdir  -p  /usr/hive/log

9.由于hive的安装采用的是远程模式,所以元数据放置在远程的MySql数据库,本文使用的是10.21.16.24远程服务器上的MySql

1)登陆10.21.16.24服务器

2)启动mysql

service mysqld start

3)初始化mysql

/usr/bin/mysql_secure_installation

[...]

Enter current password for root(enter for none):

OK, successfully used password,moving on...

[...]

Set root password? [Y/n] y

New password:

Re-enter new password:

Remove anonymous users? [Y/n] Y

[...]

Disallow root login remotely?[Y/n] N

[...]

Remove test database and accessto it [Y/n] Y

[...]

Reload privilege tables now?[Y/n] Y

All done!

4)用root登陆mysql,为hive建立mysql账户

mysql  –u root  -p

 create user  ‘hive’  identified by  ‘hive’

grant  all privileges  on  *.*  to  ‘hive’@’%’ identified  by  ‘hive’ with  option

flush  privileges;

exit

5)使用hive账户登陆mysql,并建立hive专用的数据库

mysql  -u hive  -p

create  database hive;

6)下载JDBC驱动包并复制到hivelib目录下

mysql-connector-java-5.1.22-bin.jar

7hive启动

启动分为启动metastorehiveserver,其中metastore用于和mysql之间的表结构创建或者更新时通讯,hiveserver用于客户端连接,这两个都要启动

启动metastore:(远程mysql需要启动)

hive  --service metastore

启动hiveservice:

hive  --servie hiveserver

7)启动测试

8)启动时如果报Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient 错误

解决方案:a)先检查mysql连接jdbc使用的jar包是否放到hivelib下面

                  b)检查是否成功连接到mysql服务器

                  c)正确配置hive-site.xml

     至此,所有集群配置结束!

 

 

 

 

 

 



 

 

 

 

 

 

 

 

 

 

0 0