Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0集群搭建

转载地址:http://blog.csdn.net/u013327467/article/details/45675705

                                                             前言

本博客目的在于跟大家分享大数据平台搭建过程,是笔者半年的结晶。在大数据搭建过程中,希望能给大家提过一些帮助,这也是本博客的价值所在。 
博客内容分为将五个部分,具体如下:


第一部分 集群平台搭建 
第二部分 SSH登录和JDK安装 
第三部分 Hadoop-2.6.0+zookeeper-3.4.6集群搭建 
第四部分 Spark集群搭建 
第五部分 Hive集群搭建 
第六部分 Hbase 集群搭建


以下是本集群所需要的软件,大家可按需要进行下载: 
Ubuntu14.04 
VMware Workstation 12 Pro for Linux 
Hadoop-2.6.0 
jdk-7u80-linux-x64.gz 
Zookeeper-3.4.6 
Spark-1.5.0 
Hbase-1.1.2 
Hive-1.2.0


                                              第一部分 Ubuntu物理机和虚拟机搭建

集群框架,采用一台物理机和两台虚拟机。在PC机上用easyBCD方式安装Win和Ubuntu双系统。 
一.安装easyBCD 
1.下载 
网址:http://172.28.0.26/cache/4/02/crsky.com/f5eedf182f9ae67bdd575d0feaf80406/EasyBCD-v2.2.zip 
2.设置引导 
安装好easyBCD,打开并点击添加新条目–>安装–>NeoGrub–>配置,如图所示: 
Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0集群搭建_第1张图片 
点击配置后,会跳出menu.lst文件,删除文件里面的所有内容,并复制以下内容到文件内:

title Install Ubuntu

root (hd0,1)

kernel (hd0,1)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.04-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8

initrd (hd0,1)/initrd.lz
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注:如果Win操作系统有系统保留分区,则root处为1,即root(hd0,1);如果没有则为0,即root(hd0,0)。

二.安装Ubuntu

将buntu-14.04-desktop-amd64.iso文件拷贝到C盘。用解压软件打开,在casper文件下有两个文件:initrd.lz、vmlinuz.efi,将它们复制到C盘。

接下来重启PC,在引导界面选择NeoGrub,进入安装界面后,ctril+alt+t打开终端命令,输入以下命令需要使用的命令取消光盘驱动器挂载:

sudo umount -l /isodevice 
 
   
   
   
   
  • 1

三.Ubuntu相关配置

1.打开软件中心更改软件更新源,一般选择国内的网易。

2.列举本地更新

sudo apt-get update
 
   
   
   
   
  • 1

3.安装可用更新

sudo apt-get upgrade
 
   
   
   
   
  • 1

4.修改root用户登录

sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
 
   
   
   
   
  • 1

添加

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false  
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

5.设置 root用户密码,,并输入root用户的密码

sudo passwd root  
 
   
   
   
   
  • 1

6.卸载防火墙

ufw disable   //关闭
sudo apt-get remove  ufw   //卸载
sudo ufw status   //查看
 
   
   
   
   
  • 1
  • 2
  • 3

7.安装ssh 
安装ssh-server

sudo apt-get install openssh-server
 
   
   
   
   
  • 1

安装ssh-client

sudo apt-get install openssh-client
 
   
   
   
   
  • 1
验证:
ps -e | grep ssh

450 ??00:00:00 sshd  //如果出现这个,则安装成功

重启ssh:
/etc/init.d/ssh restart
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

四.安装Ubuntu虚拟机

1.下载VMware Workstation 12 Pro for Linux 
网址:http://www.vmware.com/cn/products/workstation/workstation-evaluation 
密钥:

5A02H-AU243-TZJ49-GTC7K-3C61N
 
   
   
   
   
  • 1

2.安装VMware 
使用以下命令安装VMware,”/home/huai/桌面/“为我在Ubuntu下文件路径名,大家可跟据自己的做更改。

sudo chmod +x /home/huai/桌面/VMware-Workstation-Full-12.0.0-2985596.x86_64.bundle

sudo /home/huai/桌面/VMware-Workstation-Full-12.0.0-2985596.x86_64.bundle
 
   
   
   
   
  • 1
  • 2
  • 3

3.安装虚拟机

注:虚拟机用户名要与物理机的用户名保持一致,如笔者的三台集群的用户名都是“huai”。

用VMware安装虚拟机,采用典型方式安装,操作过程很简单,就不在这叙述了,大家可另行百度。对于刚安装好Ubuntu虚拟机,是可以联网的。按照上面Ubuntu物理机的相关配置对虚拟机Ubuntu进行同样操作。

配置好虚拟机,关闭虚拟机和VMware。复制安装的虚拟机文件,构成两台虚拟机。

4.修改主机名

因为笔者搭建此集群是为了学习spark,故将三台集群主机名命为spark01、spark02和spark03。其中,park01为物理机,充当主节点。spark02和spark03为两台虚拟机的主机名。

修改物理机主机名,使用以下命令将主机名改为spark01:

sudo gedit /etc/hostname
 
   
   
   
   
  • 1

修改虚拟机主机名:同上,分别修改为spark02和spark03。

五.修改IP

集群IP分别设为

192.168.8.101, 192.168.8.102, 192.168.8.103
 
   
   
   
   
  • 1

1.设置虚拟机IP模式

    虚拟机网卡设置为host-only模式(具体操作,请百度)

2.设置spark02的IP

通过界面设置IP

系统设置-->网络-->选项 -->IPv4设置--> method选择为manual--> 点击add按钮--添加
IP:192.168.8.102 子网掩码:255.255.255.0 网关:192.168.1.1--> apply
 
   
   
   
   
  • 1
  • 2

3.设置spark03的IP

通过同样的方式把spark03的IP设置为:192.168.8.103

4.设置物理机spark01的IP

给物理机设置静态IP有点麻烦,因为在学校用的是内网,根据网上很多方法设置后,都无法再上网了。以下这种方式是网上比较常见的修改方式,但是不好使,只作参考,修改方式如下: 
1)一种令人不愉快的方式

打开:
sudo gedit /etc/network/interfaces

添加:
auto eth0
iface eth0 inet static  
address 192.168.8.101  
netmask 255.255.255.0  
gateway 192.168.8.1  
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

设置DNS域名解析:

打开:
sudo gedit /etc/resolv.conf 

添加:
search nwu.edu.cn
nameserver 202.117.96.5 
nameserver 202.117.96.10
nameserver 127.0.1.1

打开:
sudo gedit /etc/resolvconf/resolv.conf.d/tail

添加:
search nwu.edu.cn
nameserver 202.117.96.5 
nameserver 202.117.96.10
nameserver 127.0.1.1

重启networking命令:

sudo /etc/init.d/networking restart
sudo /etc/init.d/resolvconf restart

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

笔者自己找到了两种方式设置一个固定的IP,简单且容易实现,关键在百度上都找不到。一种是采用桥接,第二种是绑定

2)采用桥接

1.点击桌面右上角网络图标栏中的"编辑连接",网络连接中选中"桥接",点击"添加";
2.对跳转出来选择连接类型窗口,选择"虚拟--桥接",点击"新建",
3.在桥接--桥接连接(c)处,点击"添加",选择"以太网",点击新建,在设备MAC地址(D)处.选择"eth0",并"保存"
4.点击IPv4设置,方法处选择为"手动",>点击"添加"设置IP为:192.168.8.101 子网掩码:255.255.255.0 网关:192.168.1.1,"保存"
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

3)采用绑定

采用绑定的方式与桥接方式操作一样,就是在操作2中,选择“虚拟--绑定”,其他操作一样。
 
   
   
   
   
  • 1

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

整个集群的主机名和IP的映射关系的内容设置是一样的,分别在三台机子上操作以下命令

sudo  gedit  /etc/hosts

添加:

192.168.8.101   spark01    
192.168.8.102   spark02
192.168.8.103   spark03 
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

七.重启

关闭两台虚拟机,并重启Ubuntu物理机
 
   
   
   
   
  • 1

                                         第二部分  SSH登录和JDK安装

一.SSH登录配置

本集群的用户名为”huai”,集群尽量用统一的用户名,用不同的ssh登录时,还要进行一些其他操作,很麻烦。

1.在物理机spark01上,使用以下命令,四个回车,并cd到相关目录,操作如下:

huai@spark01:~$ ssh-keygen -t rsa 
huai@spark01:~$ cd /home/huai/.ssh
huai@spark01:~/.ssh$ ls
id_rsa  id_rsa.pub
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

生成两个文件:id_rsa(私钥)、id_rsa.pub(公钥)

2.对两台虚拟机进行同样操作(如上)

3.将虚拟机的id_rsa.pub(公钥)传到spark01,”huai”是我集群的用户名,”huai”应改为你自己设定的用户名。分别在spark02和spark03进行以下操作:

scp id_rsa.pub huai@spark01:/home/huai/.ssh/id_rsa.pub.spark02
scp id_rsa.pub huai@spark01:/home/huai/.ssh/id_rsa.pub.spark03
 
   
   
   
   
  • 1
  • 2

4.在物理机上,按以下操作:

huai@spark01:~$ cd /home/huai/.ssh
huai@spark01:~/.ssh$ ls
id_rsa.pub       id_rsa.pub.spark03
id_rsa           id_rsa.pub.spark02 
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

将公钥导入到综合authorized_keys文件中,在目录huai@spark01:~/.ssh$下使用导入命令:

cat id_rsa.pub >> authorized_keys
cat id_rsa.pub.spark02 >> authorized_keys
cat id_rsa.pub.spark03 >> authorized_keys
 
   
   
   
   
  • 1
  • 2
  • 3

5.将spark01上的authorized_keys复制到spark02和spark03的/home/huai/.ssh/目录下

scp authorized_keys huai@spark02:/home/huai/.ssh/authorized_keys
scp authorized_keys huai@spark03:/home/huai/.ssh/authorized_keys 
 
   
   
   
   
  • 1
  • 2

6.ssh常见错误修改 
因为笔者的已经配置好,具体错误就没法再重现了。不过只要按以下操作之后,保证不会再有错误。 
   
1):

sudo gedit /etc/ssh/sshd_config
 
   
   
   
   
  • 1

打开文件后,注释”PermitRootLogin without-password”,使用”#”注释 
并在其下面添加: PermitRootLogin yes

2):

打开:
 sudo  gedit /etc/ssh/ssh_config 

添加:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3): 
如果有Agent admitted failure to sign using the key错误抛出,执行以下命令即可:

ssh-add
 
   
   
   
   
  • 1

4): 
如果ssh登录时,在known_hosts报出警告,后面显示一个数字,使用以下命令将其删除,比如显示数字”8”.

sed -i 8d /home/huai/.ssh/known_hosts
 
   
   
   
   
  • 1

7.分别在每台上进行以下ssh登录,使用”exit”退出

ssh spark01
ssh spark02
ssh spark03
 
   
   
   
   
  • 1
  • 2
  • 3

二.安装JDK

1.下载jdk,6和8不做考虑,8不支持,6版本太低,下载地址如下:

http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-linux-x64.tar.gz

2.安装

创建java文件夹:

sudo mkdir /usr/java
 
   
   
   
   
  • 1

解压

sudo tar -zxvf /home/huai/桌面/jdk-7u80-linux-x64.gz -C /usr/java/
 
   
   
   
   
  • 1

修改文件权限

sudo chmod -R 777 /usr/java/    
 
   
   
   
   
  • 1

3.修改环境变量 
因为笔者集群已经搭建好了,为了让大家不要经常修改环境变量,笔者在此处把所有安装包的环境变量都列出来,供大家参考。

操作:
sudo gedit /etc/profile

在文件最后添加:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JRE_HOME=/usr/java/jdk1.7.0_80/jre
export SCALA_HOME=/spark/scala-2.11.6
export SPARK_HOME=/spark/spark-1.5.0
export HADOOP_HOME=/spark/hadoop-2.6.0
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
export HIVE_HOME=/spark/hive-1.2.0
export IDEA_HOME=/usr/idea/idea-IC-141.178.9
export HBASE_HOME=/spark/hbase-1.1.2
export ZOOKEEPER_HOME=/spark/zookeeper-3.4.6
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$IDEA_HOME/bin:$HIVE_HOME/bin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

刷新

source /etc/profile
 
   
   
   
   
  • 1

4.验证 
使用命令java -version,如果出现java version “1.7.0_80”,则安装成功

5.设置jdk默认 
如果Ubuntu上已经安装过openjdk纳闷需要设置默认jdk。若以上验证成功,可以跳过设置默认jdk。依次操作以下命令:

sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_80/bin/java 300  
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.7.0_80/bin/javac 300  
sudo update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.7.0_80/bin/jar 300 
sudo update-alternatives --install /usr/bin/javah javah /usr/java/jdk1.7.0_80/bin/javah 300   
sudo update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.7.0_80/bin/javap 300
sudo update-alternatives --config java  
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

        第三部分 Hadoop-2.6.0+zookeeper-3.4.6集群搭建

  
一.集群规划 
Hadoop-2.6.0+Zookeeper-3.4.6+Spark-1.5.0+Hbase-1.1.2+Hive-1.2.0集群搭建_第2张图片

文字描述:本集群仅有三台机子:spark01、spark02和spark03。三台都安装hadoop-2.6.0,zookeeper-3.4.6。spark01和spark02共运行了两个namenode,两个datanode运行spark02和spark03上。

二.zooekeeper配置

1.建立spark文件夹

sudo mkdir /spark
修改权限:
sudo chmod -R 777 /spark
 
   
   
   
   
  • 1
  • 2
  • 3

2.解压

sudo tar -zxvf /home/huai/桌面/zookeeper-3.4.6.tar.gz -C /spark/
 
   
   
   
   
  • 1

3.修改zoo.cfg文件

cd /spark/zookeeper-3.4.6/conf/
mv zoo_sample.cfg zoo.cfg

 
   
   
   
   
  • 1
  • 2
  • 3

4.配置zoo.cfg

gedit zoo.cfg

修改:
dataDir=/spark/zookeeper-3.4.6/tmp
添加:
dataLogDir=/spark/zookeeper-3.4.6/logs
在最后添加:
server.1=spark01:2888:3888
server.2=spark02:2888:3888
server.3=spark03:2888:3888

保存退出
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5.建立文件夹

mkdir /spark/zookeeper-3.4.6/tmp
mkdir /spark/zookeeper-3.4.6/logs
 
   
   
   
   
  • 1
  • 2

6.设置myid 
在5)中建立的tmp文件夹下创建一个空文件,并在其中写入”1“。

创建文件:
touch myid

写入"1":
gedit myid
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

7.修改环境变量

虽然前面已经把所有的环境变量都设置好了,但这个步骤是环境配置必须的操作,所以在此处重复一遍

打开:
sudo  gedit /etc/profile
添加:
export ZOOKEEPER_HOME=/spark/zookeeper-3.4.6
export PATH=:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
刷新:
source /etc/profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

8.将配置好的zookeeper拷贝到其他节点

scp -r /spark/zookeeper-3.4.6/ huai@spark02:/spark/
scp -r /spark/zookeeper-3.4.6/ huai@spark03:/spark/
 
   
   
   
   
  • 1
  • 2

9.修改虚拟机的myid

执行:
cd /spark/zookeeper-3.4.6/tmp
打开:
gedit myid
其中:
在spark02 中写入"2"
在spark03 中写入"3"
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

10.修改虚拟机的环境变量 
按7中的操作分别修改虚拟机spark02和spark03的环境变量。

三.搭建hadoop集群 
1.下载hadoop 
网址:http://mirror.bit.edu.cn/apache/hadoop/core/ 
2.解压

sudo tar -zxvf /home/huai/桌面/hadoop-2.6.0.tar.gz -C /spark  
修改权限:
sudo chmod -R 777 /spark
 
   
   
   
   
  • 1
  • 2
  • 3

3.配置hadoop环境文件

注:在操作hadoop-env.sh,注释以下内容

#export HADOOP_OPTS="$HADOOP_OPTS -
Djava.net.preferIPv4Stack=true"
 
   
   
   
   
  • 1
  • 2
cd到配置文件目录下:

cd  /spark/hadoop-2.6.0/etc/hadoop/

依次操作:

gedit hadoop-env.sh
gedit yarn-env.sh
gedit mapred-env.sh

依次添加:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"

依次保存退出
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

按以下操作依次修改hadoop其它配置文件,可以直接复制到配置文件。相关文件属性以及细节,可以查阅其他资料。

4.gedit core-site.xml

<configuration>
  <property>
     <name>fs.defaultFSname>
    <value>hdfs://ns1value>
  property>
  <property>
     <name>hadoop.tmp.dirname>
     <value>/spark/hadoop-2.6.0/tmpvalue>
  property>
  <property>
     <name>ha.zookeeper.quorumname>    <value>spark01:2181,spark02:2181,spark03:2181value>
  property>
configuration>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5.gedit hdfs-site.xml

<configuration>
  <property>
     <name>dfs.nameservicesname>
     <value>ns1value>
  property>
  <property>
     <name>dfs.ha.namenodes.ns1name>
     <value>nn1,nn2value>
  property>
  <property>
     <name>dfs.namenode.rpc-address.ns1.nn1name>
     <value>spark01:9000value>
  property>
  <property>
      <name>dfs.namenode.http-address.ns1.nn1name>
      <value>spark01:50070value>
  property>
  <property>
       <name>dfs.namenode.rpc-address.ns1.nn2name>
       <value>spark02:9000value>
  property>
  <property>
     <name>dfs.namenode.http-address.ns1.nn2name>
     <value>spark02:50070value>
  property>
  <property>
      <name>dfs.namenode.shared.edits.dirname>  <value>qjournal://spark01:8485;spark02:8485;spark03:8485/ns1value>
  property>
  <property>
     <name>dfs.journalnode.edits.dirname>
     <value>/spark/hadoop-2.6.0/journalvalue>
  property>
   <property>
      <name>dfs.ha.automatic-failover.enabledname>
      <value>truevalue>
   property>
   <property>
      <name>dfs.client.failover.proxy.provider.ns1name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
    property>
  <property>
     <name>dfs.ha.fencing.methodsname>
    <value>
          sshfence
          shell(/bin/true)
        value>
   property>
   <property>
      <name>dfs.ha.fencing.ssh.private-key-filesname>
      <value>/home/huai/.ssh/id_rsavalue>
  property>
  <property>
     <name>dfs.ha.fencing.ssh.connect-timeoutname>
     <value>30000value>
  property>
configuration>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

6.mv mapred-site.xml.template mapred-site.xml 
gedit mapred-site.xml

<configuration>
  <property>
      <name>mapreduce.framework.namename>
      <value>yarnvalue>
  property>
configuration>    
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

7.gedit yarn-site.xml

<configuration>
  <property>
      <name>yarn.resourcemanager.ha.enabledname>
      <value>truevalue>
  property>
   <property>
    <name>yarn.resourcemanager.cluster-idname>
    <value>yrcvalue>
  property>
  <property>
      <name>yarn.resourcemanager.ha.rm-idsname>
       <value>rm1,rm2value>
  property>
   <property>
      <name>yarn.resourcemanager.hostname.rm1name>
      <value>spark01value>
   property>
   <property>
     <name>yarn.resourcemanager.hostname.rm2name>
     <value>spark02value>
 property>
   <property>
     <name>yarn.resourcemanager.zk-addressname>
   <value>spark01:2181,spark02:2181,spark03:2181value>
   property>
   <property>
     <name>yarn.nodemanager.aux-servicesname>
     <value>mapreduce_shufflevalue>
     property>
configuration>            
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

8.gedit slaves

spark02
spark03
 
   
   
   
   
  • 1
  • 2

10.复制到其他节点

scp -r /spark/hadoop-2.6.0 huai@spark02:/spark 
scp -r /spark/hadoop-2.6.0 huai@spark03:/spark 
 
   
   
   
   
  • 1
  • 2

11.修改环境变量,可略过

打开:
sudo gedit /etc/profile
添加:
export HADOOP_HOME=/spark/hadoop-2.6.0
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
刷新:
source /etc/profile     
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

12.验证 
输入以下命令,如果出现hadoop对应的版本,则hadoop配置成功。

hadoop version
 
   
   
   
   
  • 1

三.集群启动(严格按照下面的步骤)

1.启动zookeeper集群(分别在spark01、spark02、spark03上启动zk)

cd /spark/zookeeper-3.4.6/bin/
./zkServer.sh start

查看状态:一个leader,两个follower
zkServer.sh status
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

2.启动journalnode(分别在spark01、spark02、spark03上启动journalnode)

在三台机子上执行:
cd /spark/hadoop-2.6.0/sbin
hadoop-daemon.sh start journalnode

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

运行jps命令检验,spark01、spark02、spark03上多了JournalNode进程

3.格式化HDFS 
在主节点spark01上执行命令

hdfs namenode -format
 
   
   
   
   
  • 1

格式化成功会生成tmp文件,其路径为core-site.xml中的hadoop.tmp.dir配置路径

4.将tmp拷到其他节点 
注意tmp的路径:

scp -r tmp   huai@spark02:/spark/hadoop-2.6.0/
scp -r tmp   huai@spark03:/spark/hadoop-2.6.0/

 
   
   
   
   
  • 1
  • 2
  • 3

5.格式化ZK

在spark01上执行:
hdfs zkfc -formatZK
 
   
   
   
   
  • 1
  • 2

6.启动HDFS

在spark01上执行:
start-dfs.sh

 
   
   
   
   
  • 1
  • 2
  • 3

7.启动YARN.resourcemanager

start-yarn.sh
 
   
   
   
   
  • 1

8.验证 
通过以下IP用浏览器访问,一个处于active,一个处于standby,说明集群启动成功。

http://192.168.8.101:50070
NameNode 'spark01:9000' (active)
http://192.168.8.102:50070
NameNode 'spark02:9000' (standby)
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

9.验证HDFS HA

向hdfs上传一个文件:
hadoop fs -put /etc/profile /profile
hadoop fs -ls /
 
   
   
   
   
  • 1
  • 2
  • 3
kill掉active的NameNode
kill -9 of NN>
访问:http://192.168.8.101:50070 无法打开
访问:http://192.168.8.102:50070
NameNode 'spark02:9000' (active)
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
执行:
hadoop fs -ls /
-rw-r--r--   3 root supergroup      1926 2015-05-024 15:36 /profile
 
   
   
   
   
  • 1
  • 2
  • 3
手动启动挂掉的那个NameNode,在spark01上执行
hadoop-daemon.sh start namenode
访问:http://192.168.8.101:50070
显示:NameNode 'spark01:9000' (standby)

删除上传文件:
hadoop fs -rm -r /profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

到这,hadoop集群相当于已经成功搭建,剩下的就是要搭建基于hadoop的其他组件,如spark,hive,hbase。相信通过自学搭建hadoop集群的人儿,一定受了不少折腾。作为不是技术大牛的人儿,唯有屡败屡战,才能祭奠内心那份对技术的热血澎湃。


                                        第四部分 Spark集群搭建

因为spark 源代码是使用Scala语言,所以需要安装Scala环境。 
一.安装 Scala 
1.下载 
网址:http://www.scala-lang.org/download/ 
2.解压

sudo tar -zxf  sudo tar -zxvf /home/huai/桌面/scala-2.11.6.tgz  -C /spark
 
   
   
   
   
  • 1

3.修改环境变量

打开:
sudo gedit /etc/profile
添加:
export SCALA_HOME=/spark/scala-2.11.6
export PATH=PATH:$SCALA_HOME/bin
刷新:
source /etc/profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.显示版本

huai@spark01:~$ scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

 
   
   
   
   
  • 1
  • 2
  • 3
  1. 测试 
    输入”scala”命令,进入scala交互界面
huai@spark01:~$ scala
scala> 8*8
res0: Int = 64
 
   
   
   
   
  • 1
  • 2
  • 3

6.将scala复制到其他节点

scp -r /spark/scala-2.11.6/ huai@spark02:/spark/
scp -r /spark/scala-2.11.6/ huai@spark03:/spark/
 
   
   
   
   
  • 1
  • 2

7.重复 3修改其他节点的环境变量

二.spark集群搭建 
1.下载 
网址:http://mirror.bit.edu.cn/apache/spark/

2.解压

tar -zxf   /home/huai/桌面/spark-1.5.0-bin-hadoop2.6.tgz -C /spark
 
   
   
   
   
  • 1

3.文件名修改为:spark-1.5.0

mv /spark/spark-1.5.0-bin-hadoop2.6  spark-1.5.0
 
   
   
   
   
  • 1

4.修改环境变量

打开:
sudo gedit  /etc/profile
添加:
export SPARK_HOME=/spark/spark-1.5.0
export PATH=PATH:$SPARK_HOME/bin
刷新:
source /etc/profile  
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5.配置spark-env.sh

进入spark的conf目录:
cd /spark/spark-1.5.0/conf/
mv  spark-env.sh.template spark-env.sh

打开:
sudo gedit  spark-env.sh

添加:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export SCALA_HOME=/spark/scala-2.11.6
export SPARK_MASTER_IP=192.168.8.101
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/spark/hadoop-2.6.0/etc/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6.配置slaves

在spark的conf目录下:

mv slaves.template slaves

打开:
sudo gedit  slaves
添加:
spark01
spark02
spark03     
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

7.把spark复制到其他节点

scp -r spark-1.5.0 huai@spark02:/spark/
scp -r spark-1.5.0 huai@spark03:/spark/

 
   
   
   
   
  • 1
  • 2
  • 3

8.修改虚拟阶环境变量

sudo gedit /etc/profile
添加:
export SPARK_HOME=/spark/spark-1.5.0
export PATH=PATH:$SPARK_HOME/bin
export SCALA_HOME=/spark/scala-2.11.6
export PATH=PATH:$SCALA_HOME/bin
刷新:
source /etc/profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三.启动集群 
1.启动zookeeper

在每台运行:
zkServer.sh start
 
   
   
   
   
  • 1
  • 2

2.启动hadoop集群,在hadoop的sbin目录下执行:

start-all.sh
 
   
   
   
   
  • 1

3.启动spark集群

/spark/spark-1.5.0/bin$./start-all.sh
 
   
   
   
   
  • 1

5.Web管理界面

http://192.168.8.101:8080/
 
   
   
   
   
  • 1

Spark有好几个模块,如SparkSQL,Graphx,MLlib。因为Mapreduce处理速率不如Spark快,Spark将成为Mapreduce的替代品。对于Spark,我主要学习了机器学习MLlib和SparkSQL。如果你对大数据感兴趣,那么建议好好研究一下Spark。


                                 第五部分 Hive集群搭建

一.概述 
hive安装可分为四部分:

1)安装mysql
2)配置 Metastore
3)配置HiveClient 
4)配置hiveserver
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

搭建分布:mysql,Metastore安装配置在主节点spark01上, HiveClient客户端安装在spark02上。注:HiveClient客户端也可以不配置。

三.安装mysql 
mysql只需在物理机spark01上安装,Ubuntu软件中心下载安装mysql服务器

1.配置mysql

运行:
/usr/bin/mysql_secure_installation

输入密码:
删除匿名用户:
Remove anonymous users? [Y/n] Y
允许用户远程连接:
Disallow root login remotely? [Y/n]n
移除test数据库:
Remove test database and access to it? [Y/n] Y
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.登陆mysql

  mysql -u root -p
 
   
   
   
   
  • 1

3.建立hive数据库,并对其授权,注’huai’为你设立的登录密码

mysql>create database hive;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'huai' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES; 

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

4.修改hive数据库字符 
一定要修改,不然hive建表时会报错。

mysql>alter database hive character set latin1
 
   
   
   
   
  • 1

5.修改允许远程登录mysql

sudo gedit /etc/mysql/my.cnf
注释:
#bind-address=127.0.0.1
 
   
   
   
   
  • 1
  • 2
  • 3

三.安装Hive 
1.下载 
网址:http://mirrors.cnnic.cn/apache/hive/ 
2.解压

sudo tar -zxvf /home/huai/桌面apache-hive-1.2.0.tar.gz -C /spark/

文件名修改为hive-1.2.0
mv apache-hive-1.2.0   hive-1.2.0
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

3.修改配置文件名 
在hive-1.2.0/conf下

mv hive-default.xml.template hive-site.xml
mv  hive-log4j.properties.template hive-log4j.properties
mv  hive-exec-log4j.properties.template  hive-exec-log4j.properties
mv hive-env.sh.template   hive-env.sh
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

4.gedit hive-env.sh

export HADOOP_HOME=/spark/hadoop-2.6.0
export HIVE_CONF_DIR=/spark/hive-1.2.0/conf
 
   
   
   
   
  • 1
  • 2

5.gedit hive-log4j.properties 
添加

 hive.log.dir=/spark/hive-1.2.0/logs
 
   
   
   
   
  • 1

6.新建logs文件

mkdir /spark/hive-1.2.0/logs
 
   
   
   
   
  • 1

7.gedit hive-site.xml 
删除所有内容,添加如下内容.注意配置文件中的’huai’为mysql登录密码,记得修改

<configuration>
   <property>
      <name>hive.metastore.warehouse.dirname>
      <value>hdfs://ns1/hive/warehousevalue>
   property>
    <property>
      <name>hive.exec.scratchdirname>
      <value>hdfs://ns1/hive/scratchdirvalue>
   property>
   <property>
      <name>hive.querylog.locationname>
      <value>/spark/hive-1.2.0/logsvalue>
   property>
   <property>
      <name>javax.jdo.option.ConnectionURLname>
      <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=truevalue>
   property>
   <property>
       <name>javax.jdo.option.ConnectionDriverNamename>
       <value>com.mysql.jdbc.Drivervalue>
    property>
    <property>
    <name>javax.jdo.option.ConnectionUserNamename>
    <value>rootvalue>
    property>
    <property>
    <name>javax.jdo.option.ConnectionPasswordname>
    <value>huaivalue>
    property>
     <property>
         <name>hive.zookeeper.quorumname>
         <value>spark01,spark02,spark03value>
     property>
configuration>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

8.配置环境变量

打开:
sudo gedit /etc/profile
添加:
export HIVE_HOME=/spark/hive-1.2.0
export PATH=:$HIVE_HOME/bin
刷新:
source /etc/profile

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

9.在hive/lib下有个jline的jar,将hadoop内的这个jar包换成一致的,否则会启动hive会报错。

10.hive和mysq安装完成后,将mysql-connector-java-5.1.25-bin.jar连接jar拷贝到hive-1.2.0/lib目录下,在hive-1.2.0/bin下,运行:

 ./hive
 
   
   
   
   
  • 1

11.访问 http://192.168.8.101:50070 
查看hadoop文件系统,多了个hive文件,证明安装成功。 
12.修改hive文件权限

hadoop fs -chmod -R 777 /hive
 
   
   
   
   
  • 1

四.配置hiveserver

gedit hive-site.xml 
添加:

<property>
     <name>hive.server2.thrift.min.worker.threadsname>
     <value>1value>
     <description>Minimum number of Thrift worker threadsdescription>
property>
<property>
   <name>hive.server2.thrift.max.worker.threadsname>
   <value>100value>
  property>
  <property>
      <name>hive.server2.thrift.portname>
      <value>10000value>
  property>
   <property>
      <name>hive.server2.thrift.bind.hostname>
      <value>spark01value>
 property>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

五.Hive客户端配置 
1.将hive从Master节点(spark01)拷贝到Slave节点(spark02)上

scp -r /spark/hive-1.2.0  huai@spark02:/spark/
 
   
   
   
   
  • 1

2.配置Metastore的连接信息 
在hive-1.2.0/conf下

gedit hive-site.xml
添加:
<property>
 <name>hive.metastore.urisname>
  <value>thrift://spark01:9083value>
property>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.修改环境变量

sudo gedit /etc/profile
export HIVE_HOME=/spark/hive-1.2.0
export PATH=:$HIVE_HOME/bin
source /etc/profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

                                       第五部分 Hbase集群搭建

一.配置hbase 
1.下载 
网址:http://mirrors.hust.edu.cn/apache/hbase/ 
2.解压

 tar -zxf  /home/huai/桌面/hbase-1.1.2.tgz -C /spark
 
   
   
   
   
  • 1

使用外部zk,配置hbase集群

3.gedit hbase-env.sh

export JAVA_HOME=/usr/java/jdk1.7.0_80
export HBASE_MANAGES_ZK=false
export HBASE_PID_DIR=/spark/hbase-1.1.2/pids
export HBASE_CLASSPATH=/spark/hadoop-2.6.0/etc/hadoop
export HBASE_HOME=/spark/hbase-1.1.2

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.gedit hbase-site.xml

<configuration>
   <property>
       <name>hbase.tmp.dirname>
       <value>/spark/hbase-1.1.2/tmpvalue>
   property>
  <property>
      <name>hbase.rootdirname>
      <value>hdfs://ns1/hbasevalue>
   property>
    <property>
         <name>hbase.cluster.distributedname>
         <value>truevalue>
   property>
   <property>
      <name>zookeeper.session.timeoutname>
      <value>120000value>
   property>
   <property>
    <name>hbase.zookeeper.property.tickTimename>
    <value>6000value>
  property>
  <property>
     <name>hbase.zookeeper.property.clientPortname>
     <value>2181value>
   property>
   <property>
      <name>hbase.zookeeper.quorumname>
      <value>spark01,spark02,spark03value>
    property>
   <property>
      <name>hbase.zookeeper.property.dataDirname> 
      <value>/spark/zookeeper-3.4.6/tmpvalue>
   property>
   <property>
      <name>dfs.replicationname>
      <value>2value>
    property>
    <property> 
       <name>hbase.master.maxclockskewname> 
       <value>180000value>
    property> 
configuration>
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

4.gedit regionservers

spark02
spark03
 
   
   
   
   
  • 1
  • 2

5.把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下

6.拷贝hbase到其他节点

scp -r /spark/hbase-1.1.0  huai@spark02:/spark/
scp -r /spark/hbase-1.1.0  huai@spark03:/spark/
 
   
   
   
   
  • 1
  • 2

7.修改环境变量

sudo gedit /etc/profile
export HBASE_HOME=/spark/hbase-1.1.0
export PATH=$HBASE_HOME/bin:$PATH
source /etc/profile
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

8.将配置好的hbase拷贝到每一个节点并同步时间和修改环境变量

二.启动hbase 
1.启动zk

zkServer.sh start 
 
   
   
   
   
  • 1

2.启动hadoop集群

start-dfs.sh
 
   
   
   
   
  • 1

3.启动hbase,在主节点上hbase-1.1.0/bin运行

start-hbase.sh
 
   
   
   
   
  • 1

3.通过浏览器访问hbase Web页面 
HMaster Web页面

http://192.168.8.101:16010 
 
   
   
   
   
  • 1

HRegionServer Web页面

http://192.168.8.101:16030
 
   
   
   
   
  • 1

4.shell 验证 
进入hbase bin目录下:

huai@spark01:/spark/hbase-1.1.0/bin$ ./hbase shell
 
   
   
   
   
  • 1

1)使用list验证:

hbase(main):001:0> list
     TABLE                                                                           
     user                                                                            
     1 row(s) in 1.4940 seconds
     => ["user"]
     hbase(main):002:0> 
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2) 建表验证

create 'user','name','sex'
 
   
   
   
   
  • 1

如果list和建表都没出现错误的话,就意味着Hbase 安装成功

三.搭建错误排除

1.当Hbase shell时出现这样的错误

 SLF4J: Found binding in [jar:file:/usr/local/hbase-1.1.0/lib/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class
 
   
   
   
   
  • 1

这是因为hadoop和hbase的slf4j-log4j12 jar包冲突,将HBase中的slf4j-log4j12-1.7.5移除 
2.Hbase运行要在hadoop非安全模式下使用,使用以下命令查看hadoop安全模式和退出安全模式.

hdfs dfsadmin -safemode get      //查看
hdfs dfsadmin -safemode leave    //退出
 
   
   
   
   
  • 1
  • 2

3.安装失败后,要删除hadoop文件系统下的Hbase文件,使用命令

hadoop fs -rm -r -f /hbase
 
   
   
   
   
  • 1

4.这是最关键的。hosts文件中localhost的IP为127.0.0.1,如果有127.0.1.1的话,要将其改为127.0.0.1,以下是笔者hosts文件中的内容:

sudo gedit /etc/hosts

127.0.0.1 localhost

192.168.8.101    spark01   
192.168.8.102    spark02
192.168.8.103    spark03

#The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

 
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

注:spark01,spark02,spark03为集群主机名

5.修改hbase文件目录权限

hadoop fs -chmod -R 777 /hbase  
 
   
   
   
   
  • 1

6.如果你多次安装过不同版本的hbase且使用外部zookeeper,记得清理zookeeper中Hbase中文件,笔者就是因为这个问题,苦苦折磨了一周.

关闭hbase,在zookeeper的bin目录运行zkCli.sh 
终端最后显示:

WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 
 
   
   
   
   
  • 1
  • 2
  • 3

按以下操作删除Hbase

[zk: localhost:2181(CONNECTED) 1] ls /
[hbase, hadoop-ha, yarn-leader-election, zookeeper]
 
   
   
   
   
  • 1
  • 2

如果有hbase则进行下一步

[zk: localhost:2181(CONNECTED) 2] rmr /Hbase
 
   
   
   
   
  • 1

重启hbase

start-hbase.sh
 
   
   
   
   
  • 1

7.单独启动HMaster,Hregionserve命令

hbase-daemon.sh  start regionserver 
hbase-daemon.sh  stop master
hbase-daemon.sh  start  regionserver
hbase-daemon.sh  stop  regionserver
 
   
   
   
   
  • 1
  • 2
  • 3
  • 4

四.hbase安装总结

1.Hbase与hadoop有版本兼容要求,一般的解决方式都是把Hbase中与hadoop相关的jar包,替换成hadoop版本的jar包。 
2.集群时间记得要同步,同步方式界面操作调整时区和格式。 
3.安装会因为环境不同,而出现不同的错误,但整个安装过程应该有这样的心态:屡败屡战,经折腾。


作者后言: 
满纸荒唐言,一把辛酸泪。都云作者痴,谁解其中味。第一篇博客到此结束,如果你看到,集群也配到这,证明你配置成功了,恭喜你了。由于是第一次写博客,加上学习时间也比较紧,文章或多或少有些瑕疵,还望见谅。


你可能感兴趣的:(hive,hadoop,hbase,zookeeper,spark)