美文网首页
hadoop及其组件安装

hadoop及其组件安装

作者: ZX_JS | 来源:发表于2020-06-08 17:27 被阅读0次

    一、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
    
    <configuration> 
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop/hadoop-2.7.3/tmp</value>
        </property>
        <property>
            <name>io.file.buffer.size</name>
            <value>131702</value>
        </property>
        <!--指定可以在任何IP访问-->
        <property>
            <name>hadoop.proxyuser.hduser.hosts</name>
            <value>*</value>
        </property>
        <!--指定所有用户可以访问-->
        <property>
            <name>hadoop.proxyuser.hduser.groups</name>
            <value>*</value>
        </property>
    </configuration>
    

    —hdfs-site.xml

    vi hdfs-site.xml
    
    <configuration>
        <!--指定namenode名称空间的存储地址-->
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/hadoop-2.7.3/hdfs/name</value>
        </property>
        <!--指定datanode数据存储地址-->
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/hadoop-2.7.3/hdfs/data</value>
        </property>
        <property>
            <name>dfs.replication</name>
            <value>2</value>
        </property>
        <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:9001</value>
        </property>
        <property>
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>
    </configuration>
    

    —mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
    
    vi mapred-site.xml
    
    <configuration>
        <!-- 配置MapReduce运行于yarn中 -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>master:10020</value>
        </property>
        <!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>master:19888</value>
        </property>
        <property>
            <name>dfs.permissions</name>
            <value>false</value>
        </property>
    </configuration>
    
    

    —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
    
    <configuration>
        <!-- Site specific YARN configuration properties -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>1024</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> 
    </configuration>
    

    — 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
    
    <configuration>
        <!--在hdfs上hive数据存放目录,启动hadoop后需要在hdfs上手动创建-->
        <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>hdfs://master:9000/user/hive/warehouse</value>
        </property>
        <property>
            <name>datanucleus.readOnlyDatastore</name>
            <value>false</value>
        </property>
        <property>
            <name>datanucleus.fixedDatastore</name>
            <value>false</value>
        </property>
        <property>
            <name>datanucleus.autoCreateSchema</name>
            <value>true</value>
        </property>
        <property>
            <name>datanucleus.autoCreateTables</name>
            <value>true</value>
        </property>
        <property>
            <name>datanucleus.autoCreateColumns</name>
            <value>true</value>
        </property>
        <!--通过jdbc协议连接mysql的hive库-->
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://master:3306/hive
            createDatabaseIfNotExist=trueuseSSL=false</value>
        </property>
        <!--jdbc的mysql驱动-->
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.jdbc.Driver</value>
        </property>
        <!--mysql用户名-->
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value>
        </property>
        <!--mysql用户密码-->
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>root</value>
        </property>
        <!--指定hive元数据访问路径,可以有多个,逗号分隔-->
        <property>
            <name>hive.metastore.uris</name>
            <value>thrift://master:9083</value>
        </property>
        <property>
            <name>hive.exec.local.scratchdir</name>
            <value>/usr/local/storage/hive/exec</value>
         </property>
        <property>
            <name>hive.downloaded.resources.dir</name>
            <value>/usr/local/storage/hive/downloadedsource</value>
        </property>
        <!--hiveserver2的HA-->
        <property>
            <name>hive.zookeeper.quorum</name>
            <value>master,slave1,slave2</value>
        </property>
    </configuration>
    

    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
    
    <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.zookeeper.quorum</name>
            <value>master,slave1,slave2</value>
        </property>
        <property>
            <name>hbase.tmp.dir</name>
            <value>/usr/local/storage/hbase</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/usr/local/storage/zookeeper/data</value>
        </property>
        <property>
            <name>hbase.zookeeper.property.clientPort</name>
            <value>2181</value>
        </property>
        <property>
            <name>hbase.master.info.port</name>
            <value>60010</value>
        </property>
    </configuration>
    

    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及其组件安装

          本文链接:https://www.haomeiwen.com/subject/qsortktx.html