hadoop及其组件安装

一、hadoop安装所需环境

操作系统集群配置

搭建3节点完全分布式集群,即1个nameNode,2个dataNode,分别如下:

主机名 IP 描述
master 10.221.101.1 NameNode
slave1 10.221.101.2 DataName
slave2 10.221.101.3 DataNode

注意:创建文件或目录后,访问它节点会有权限问题,所以不建议创建,建议使用scp命令

1、创建虚拟机CentOS7并安装配置JDK,克隆两台

2、修改主机名:master、slave1、slave2

3、设置静态:10.221.101.1、10.221.101.2、10.221.101.3

4、关闭防火墙

5、免密设置

每台节点生成公钥:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

master中将公钥id_dsa.pub添加进keys,实现master免密:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

将master中公钥分别添加到slave1及slave2的keys中,实现master对slave1及slave2节点免密:

scp ~/.ssh/id_dsa.pub  root@slave1: /opt/
cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/id_dsa.pub  root@slave2: /opt/
cat /opt/id_dsa.pub >> ~/.ssh/authorized_keys

master执行 如下命令,进行验证

ssh master
ssh slave1
ssh slave2

6、组件所用版本

hadoop-2.7.3 
zookeeper-3.4.10
hbase-1.3.1
hive-2.1.1:-mysql
spark-2.1.0:scala
zookepper用于hbase及hive
组件安装路径:mkdir /usr/local/hadoop

二、hadoop-2.7.3安装

安装路径:mkdir /usr/local/hadoop/hadoop-2.7.3/bin/

1、解压hadoop

tar -xzvf hadoop-2.7.3/ -C /usr/local/hadoop/

2、 执行命令检查hadoop是否可用

cd /usr/local/hadoop/hadoop-2.7.3/bin/

查看是否显示hadoop版本信息Hadoop 2.7.3 显示即正常

hadoop version

3、创建所需目录

cd /usr/local/hadoop/hadoop-2.7.3
mkdir -pv tmp/dfs/{ data, name }

4、设置hadoop环境变量

vi /etc/profile
# Hadoop
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.3

#Path
PATH=PATH:JAVA_HOME/bin:JRE_HOME/binHADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile

任意目录输入 hado,然后按Tab,如果自动补全为hadoop,则说明环境变量配正确

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

5、修改hadoop配置文件

cd /usr/local/hadoop/hadoop-2.7.3/etc/hadoop/

—hadoop-env.sh

vi hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0_92

—core-site.xml

vi core-site.xml
 
    
        fs.defaultFS
        hdfs://master:9000
    
    
        hadoop.tmp.dir
        file:/usr/local/hadoop/hadoop-2.7.3/tmp
    
    
        io.file.buffer.size
        131702
    
    
    
        hadoop.proxyuser.hduser.hosts
        *
    
    
    
        hadoop.proxyuser.hduser.groups
        *
    

—hdfs-site.xml

vi hdfs-site.xml

    
    
        dfs.namenode.name.dir
        file:/usr/local/hadoop/hadoop-2.7.3/hdfs/name
    
    
    
        dfs.datanode.data.dir
        file:/usr/local/hadoop/hadoop-2.7.3/hdfs/data
    
    
        dfs.replication
        2
    
    
        dfs.namenode.secondary.http-address
        master:9001
    
    
        dfs.webhdfs.enabled
        true
    

—mapred-site.xml

cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

    
    
        mapreduce.framework.name
        yarn
    
    
    
        mapreduce.jobhistory.address
        master:10020
    
    
    
        mapreduce.jobhistory.webapp.address
        master:19888
    
    
        dfs.permissions
        false
    


—yarn-env.sh

vi yarn-env.sh
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_92

—yarn-site.xml

vi yarn-site.xml

    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.nodemanager.auxservices.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    
    
        yarn.nodemanager.resource.memory-mb
        1024
    
    
        yarn.resourcemanager.hostname
        master
    
    
        yarn.resourcemanager.address
        master:8032
    
    
        yarn.resourcemanager.scheduler.address
        master:8030
    
    
        yarn.resourcemanager.resource-tracker.address
        master:8031
    
    
        yarn.resourcemanager.admin.address
        master:8033
    
    
        yarn.resourcemanager.webapp.address
        master:8088
     

— slaves

vi salves

将localhost删掉,加入如下内容,即dataNode节点的hostname

slave1
slave2

6、 以上配置同步到slave1,slave2中

scp -r /usr/local/hadoop root@slave1:/usr/local
scp -r /usr/local/hadoop root@slave2:/usr/local

7、启动hadoop

— 首次启动需要先在 master 节点进行 NameNode 的格式化:

cd /usr/local/hadoop/hadoop-2.7.3/bin
hdfs namenode -format

— 在master机器上,进入hadoop的sbin目录

cd /usr/local/hadoop/hadoop-2.7.3/sbin
./start-all.sh

8、查看是否启动成功

—jps 查看当前java的进程

输入jps 查看当前java的进程,列出当前java进程的PID和Java主类名,nameNode节点除了JPS,有3个进程

[root@master sbin]# jps
16178 NameNode
16375 SecondaryNameNode
16502 ResourceManager
16749 Jps

在slave1和slave2节点上分别输入 jps 查看进程如下,说明配置成功

[root@slave1 ~]# jps
15866 DataNode
15964 NodeManager
16061 Jps

— 查看运行状况

在浏览器访问nameNode节点的8088端口和50070端口可以查看hadoop的运行状况

192.168.1.110:50070

192.168.1.110:8088

三、zookeeper-3.4.10安装

zookeeper集群搭建要至少3个节点(master,slave1, slave2),所以三台服务器都要部署zookeeper

1、解压到安装目录

tar -xzvf zookeeper-3.4.10.tar.gz -C /usr/local/hadoop/

2、添加环境变量

vi /etc/profile
#zooleeper
export ZOOKEEPER=/usr/local/hadoop/zookeeper-3.4.10

# Path
exportPATH=PATH:JAVA_HOME/bin:JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3、 修改配置文件

/usr/local/hadoop/zookeeper-3.4.10/conf

cp zoo_sample.cfg  zoo.cfg
vi zoo.cfg

删除原有内容

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/usr/local/storage/zookeeper/data
dataLogDir=/usr/local/storage/zookeeper/logs 
clientPort=2181
server.1=master:2888:3888 
server.2=slave1:2888:3888 
server.3=slave2:2888:3888

4 、根据以上配置 创建zookeeper的数据文件和日志存放目录

mkdir -pv /usr/local/storage/zookeeper/{data,logs }

同步到其它节点

scp -r  /usr/local/storage/zookeeper/{data,logs } root@slave1: /usr/local/storage/zookeeper/

5 、在三台zookeeper的/usr/local/storage/zookeeper/data目录下分别创建并编辑myid

—创建

touch myid

—编辑

vi myid
echo 1 > /usr/local/storage/zookeeper/data/myid
echo 2 > /usr/local/storage/zookeeper/data/myid
echo 3 > /usr/local/storage/zookeeper/data/myid

6 、将以上配置同步到其他hadoop节点

scp -r /usr/local/hadoop/zookeeper-3.4.10 root@slave1:/usr/local/hadoop/
scp -r /usr/local/hadoop/zookeeper-3.4.10 root@slave2:/usr/local/hadoop/

7、启动zookeeper

如果zookeeper集群还没有启动的话, 首先把各个zookeeper起来。最好三个节点上同时启动

cd /usr/local/hadoop/zookeeper-3.4.10/bin
./zkServer.sh start 
./zkServer.sh status 

(1个leader,2个follower)

输入jps,会显示启动进程:QuorumPeerMain

jps

四、Hive-2.1.1安装

前提安装mysql

1、解压到安装目录

tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/hadoop/

2、 添加环境变量

vi /etc/profile
#hive
export HIVE_HOME=/usr/local/hadoop/apache-hive-2.1.1-bin

# Path 
export PATH=PATH:JAVA_HOME/bin:$JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin:HBASE_HOME/bin:$HIVE_HOME/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3 、配置文件修改

cd /usr/local/hadoop/apache-hive-2.1.1-bin/conf

—hive-env.sh

cp hive-env.sh.template  hive-env.sh

—hive-site.xml

cp hive-site.xml.template hive-site.xml
vi hive-site.xml

    
    
        hive.metastore.warehouse.dir
        hdfs://master:9000/user/hive/warehouse
    
    
        datanucleus.readOnlyDatastore
        false
    
    
        datanucleus.fixedDatastore
        false
    
    
        datanucleus.autoCreateSchema
        true
    
    
        datanucleus.autoCreateTables
        true
    
    
        datanucleus.autoCreateColumns
        true
    
    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://master:3306/hive
        createDatabaseIfNotExist=trueuseSSL=false
    
    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
    
    
    
        javax.jdo.option.ConnectionUserName
        root
    
    
    
        javax.jdo.option.ConnectionPassword
        root
    
    
    
        hive.metastore.uris
        thrift://master:9083
    
    
        hive.exec.local.scratchdir
        /usr/local/storage/hive/exec
     
    
        hive.downloaded.resources.dir
        /usr/local/storage/hive/downloadedsource
    
    
    
        hive.zookeeper.quorum
        master,slave1,slave2
    

4、 hive lib中添加所需jar包

cd /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

—添加mysql驱动

cp /root/package/hadoop/mysql-connector-java-5.1.38.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

【以下可不配置】

—从hbase/lib下复制必要jar包

cp /usr/local/hadoop/hbase-1.3.1/lib/hbase-client-1.3.1.jar 
/usr/local/hadoop/apache-hive-2.1.1-bin/lib/
cp /usr/local/hadoop/hbase-1.3.1/lib/hbase-common-1.3.1.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

—同步hive和hadoop的jline版本

cp /usr/local/hadoop/apache-hive-2.1.1-bin/lib/jline-2.12.jar 

/usr/local/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib

查看版本

cd /home/hadoop/hadoop/share/hadoop/yarn/lib 
find ./ -name "jlinejar" 

若有低版本则删除

例如:jline 0.9 rm jline-0.9.94.jar

—复制jdk的tools.jar

cp $JAVA_HOME/lib/tools.jar /usr/local/hadoop/apache-hive-2.1.1-bin/lib/

5 、在配置的mysql中创建hive库

create database hive;

【需外界可连接上】

6 、hdfs创建存储数据的目录

hadoop fs -mkdir /tmp 
hadoop fs -mkdir -p /user/hive/warehouse 
hadoop fs -chmod g+w /tmp 
hadoop fs -chmod g+w /user/hive/warehouse

7、 启动hive

hive 远程服务 (端口号10000) 启动方式[metastore和hiveserver2在同一台上启动即可]

nohup /usr/local/hive/bin/hive --service metastore &> metastore.log &  
nohup /usr/local/hive/bin/hive --service hiveserver2 &> hiveserver2.log 

hive 命令行模式

hive 

或者输入

hive --service cli

查看进程为:2个RunJar

注意:可以在任意一台服务器上启动hive,都可以。

8 、查看启动进程

通过命令 jps 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode进程

Jps

Master上:

29162 RunJar
28442 HMaster
28049 ResourceManager
28999 RunJar
27607 NameNode
29328 Jps
28571 HRegionServer
27448 QuorumPeerMain
27802 SecondaryNameNode

在 Slave 节点可以看到 DataNode 和 NodeManager 进程

Slave上:

30086 RunJar
28962 DataNode
29834 HRegionServer
30245 RunJar
28868 QuorumPeerMain
29075 NodeManager

程序启动成功后可以在任意一台启动hive

可以在启动MR-JobHistory服务,

sbin/mr-jobhistory-daemon.sh start historyserver

Hadoop2 MR-JobHistory服务介绍

1)MR-JobHistory服务目标

主要是向用户提供历史的mapred Job 查询

详细解释:

a)在运行MR Job时,MR 的 ApplicationMaster会根据mapred-site.xml配置文件中的配置,将MR Job的job history信息保存到指定的hdfs路径(首先保存到临时目录,然后mv到最终目录)

b)如果在yarn-site.xml中,没有配置nodemanage的LogAggregation功能,则historyserver无法提供mr日志明细查询的功能(在提交mr job时,yarn和mapred的配置都是必须的)

c)historyserver向外提供两个接口,web接口可以提供jobhistory和明细日志查询的功能,而restApi只提供jobhistory查询的功能

五、Hbase-1.3.1安装

1、 解压到安装目录

tar -zxvf hbase-1.3.1-bin.tar.gz -C /usr/local/hadoop/

2、添加环境变量

vi /etc/profile
#Hbase
export HBASE_HOME=/usr/local/hadoop/hbase-1.3.1

# Path
export PATH=PATH:JAVA_HOME/bin:JRE_HOME/bin:HADOOP_HOME/bin:HADOOP_HOME/sbin:ZOOKEEPER/bin:$HBASE_HOME/bin
source /etc/profile

同步到其他节点上

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

3、配置文件修改

/usr/local/hadoop/hbase-1.3.1/conf

—regionservers 文件

vi  regionservers 
master
slave1
slave2

—hbase-env.sh

vi hbase-env.sh
#The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/java/jdk1.8.0_92

# Tell HBase whether it should manage it's own instance of Zookeeper or not.
# 禁用Hbase自带zookeeper
export HBASE_MANAGES_ZK=false

—hbase-site.xml

vi hbase-site.xml

    
        hbase.rootdir
        hdfs://master:9000/hbase
    
    
        hbase.cluster.distributed
        true
    
    
        hbase.zookeeper.quorum
        master,slave1,slave2
    
    
        hbase.tmp.dir
        /usr/local/storage/hbase
    
    
        hbase.zookeeper.property.dataDir
        /usr/local/storage/zookeeper/data
    
    
        hbase.zookeeper.property.clientPort
        2181
    
    
        hbase.master.info.port
        60010
    

4、创建hbase-site.xml配置文件中的hbase目录

mkdir /usr/loca/storage/hbase

同步软件到其他节点

scp -r  /usr/loca/storage/hbase root@slave1: /usr/loca/storage/
scp -r  /usr/loca/storage/hbase root@slave2: /usr/loca/storage/

5、同步上述配置到其他节点

scp -r /usr/local/hadoop/hbase-1.3.1 root@slave1: /usr/local/hadoop/
scp -r  /usr/local/hadoop/hbase-1.3.1 root@slave2: /usr/local/hadoop/

6、启动Hbase

—启动

/usr/local/hadoop/hbase-1.3.1/bin
./start-hbase.sh

—验证安装成功

hbase shell

—查看进程为:HMaster,HRegionServer

jps

主节点:HMaster,HRegionServer

从节点:HRegionServer

—通过web UI访问hbase状态

http://192.168.1.110:16010/master-status

你可能感兴趣的:(hadoop及其组件安装)