hadoop2.7.3完全分布式安装-docker-hive1.2.1-hiveserver2-weave1.9.3

    xiaoxiao2021-03-25  70

    0.环境介绍:

    1)ubuntu14.04 docker镜像

    地址:https://github.com/gaojunhao/ubuntu14.04

    2)hadoop2.7.3

    地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz

    3)JDK1.8

    这里下载的是jdk-8u74-Linux-x64.gz

    地址:http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html

    4)docker 17.03.0-ce for ubuntu

    地址:https://store.docker.com/editions/community/docker-ce-server-ubuntu?tab=description

    5)hive1.2.1

    地址:http://www-eu.apache.org/dist/hive/hive-1.2.1/

    6)mysql 5.5.54

    7)weave1.9.3

    地址:https://www.weave.works/docs/net/latest/installing-weave/

    1.安装

    1)docker 安装

    apt-get install -y curl curl -sSL https://get.docker.com/|sh usermod -aG docker $(whoami)

    2)运行ubuntu14.04镜像

    docker run -it -h master ubuntu:14.04

    3)安装jdk1.8

    docker cp /jdk-8u74-linux-x64.gz containerid:/home/ubuntu/jdk-8u74-linux-x64.gz

    tar -zxvf jdk-8u74-linux-x64.gz

    3.1)配置环境变量

    vim /etc/profile

    export JAVA_HOME=/home/ubuntu/jdk1.8.0_74 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH

    3.2)jdk测试

    source /etc/profile

    java -version

    显示以下则配置正确

    Javaversion "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

    4)hadoop2.7.3安装

    docker cp /hadoop-2.7.3-src.tar.gz containerid:/home/ubuntu/hadoop-2.7.3-src.tar.gz

    tar -zxvf hadoop-2.7.3-src.tar.gz

    4.1)环境变量配置

    vim /etc/profile

    export HADOOP_HOME=/soft/apache/hadoop/hadoop-2.7.3 export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin

    source /etc/profile

    4.2)hosts文件

    vim /etc/host-tmp

    添加以下:

    127.0.0.1       localhost ::1     localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2        master 172.17.0.3        slaver1 172.17.0.4        slaver2

    保存后

    vim /init.sh

    添加以下:

    #!/bin/sh rm /etc/hosts cat /etc/host-tmp >> /etc/hosts /etc/init.d/networking restart

    4.3)ssh免密登录

    参照:http://blog.csdn.net/ab198604/article/details/8250461

    本文摘取该博文ssh免密登录设置部分

    SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数

    据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大大提高访问效率。

    (1)     每个结点分别产生公私密钥。

    键入命令:

    以上命令是产生公私密钥,产生目录在用户主目录下的.ssh目录中,如下:

    Id_dsa.pub为公钥,id_dsa为私钥,紧接着将公钥文件复制成authorized_keys文件,这个步骤是必须的,过程如下:

    用上述同样的方法在剩下的两个结点中如法炮制即可。

     

    (2)     单机回环ssh免密码登录测试

    即在单机结点上用ssh进行登录,看能否登录成功。登录成功后注销退出,过程如下:

    注意标红圈的指示,有以上信息表示操作成功,单点回环SSH登录及注销成功,这将为后续跨子结点SSH远程免密码登录作好准备。

    用上述同样的方法在剩下的两个结点中如法炮制即可。

     

    (3)     让主结点(master)能通过SSH免密码登录两个子结点(slave

    为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样

    master就可以顺利安全地访问这两个slave结点了。操作过程如下:

    如上过程显示了node1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公钥文件追加至authorized_keys文件中,通过这步操作,如果不出问题,master结点就可以通过ssh远程免密码连接node1结点了。在master结点中操作如下:

    由上图可以看出,node1结点首次连接时需要,“YES”确认连接,这意味着master结点连接node1结点时需要人工询问,无法自动连接,输入yes后成功接入,紧接着注销退出至master结点。要实现ssh免密码连接至其它结点,还差一步,只需要再执行一遍ssh node1,如果没有要求你输入”yes”,就算成功了,过程如下:

    如上图所示,master已经可以通过ssh免密码登录至node1结点了。

     

    node2结点也可以用同样的方法进行,如下图:

    Node2结点复制master结点中的公钥文件

     

    Master通过ssh免密码登录至node2结点测试:

    第一次登录时:

     

    第二次登录时:

    表面上看,这两个结点的ssh免密码登录已经配置成功,但是我们还需要对主结点master也要进行上面的同样工作,这一步有点让人困惑,但是这是有原因的,具体原因现在也说不太好,据说是真实物理结点时需要做这项工作,因为jobtracker有可能会分布在其它结点上,jobtracker有不存在master结点上的可能性。

     

    master自身进行ssh免密码登录测试工作:

     

    至此,SSH免密码登录已经配置成功。

    4.4)修改hadoop配置文件

    cd $HADOOP_HOME/etc/hadoop/

    4.4.1.hadoop-env.sh

    export JAVA_HOME=/home/ubuntu/jdk1.8.0_74

    4.4.2.slaves

    添加以下:

    localhost slaver1 slaver2

    4.4.3.core-site.xml

    添加以下:

    <property>             <name>hadoop.tmp.dir</name>             <value>/soft/apache/hadoop/hadoop-2.7.3/tmp</value>             <description>A base for other temporary directories.</description>     </property>

    4.4.4.hdfs-site.xml

    添加以下:

    <property>         <name>dfs.namenode.name.dir</name>         <value>/soft/apache/hadoop/hadoop-2.7.3/namenode</value>         <final>true</final>     </property>     <property>         <name>dfs.datanode.data.dir</name>         <value>/soft/apache/hadoop/hadoop-2.7.3/datanode</value>         <final>true</final>     </property>

    4.5)保存docker镜像

    docker ps 查看当前启动的镜像id

    docker commit containerid hadoop:master

    docker commit containerid hadoop:slaver1

    docker commit containerid hadoop:slaver2

    4.6)格式化namenode

    docker run -it -h master hadoop:master

    docker run -it -h slaver1 hadoop:slaver1

    docker run -it -h slaver2 hadoop:slaver2

    在master节点

    hadoop namenode -format

    上面只要出现successfully formatted则格式化成功了.

    4.7)启动hadoop

    start-dfs.sh

    start-yarn.sh

    4.8)jps检测后台程序是否启动成功

    jps

    master节点

    root@master:/# jps 201 NameNode 1264 Jps 1108 ResourceManager 526 SecondaryNameNode 316 DataNode 1224 NodeManager slaver节点

    root@slaver1:/# jps 276 NodeManager 401 Jps 109 DataNode

    root@slaver2:/# jps 276 NodeManager 401 Jps 109 DataNode

    如果namenode datanode节点没有启动

    参照:http://blog.csdn.net/lu8000/article/details/46313231

    http://blog.csdn.net/asia_kobe/article/details/50902812

    http://www.cnblogs.com/kinglau/p/3796274.html

    4.9)hadoop pi 测试

    cd $HADOOP_HOME

    root@master:/soft/apache/hadoop/hadoop-2.7.3/share/hadoop/mapreduce# hadoop jar hadoop-mapreduce-examples-2.7.3.jar pi 10 10

    如果遇到run job一直运行不下去,检查下磁盘使用率是不是超过了90%,可以增大一些可用磁盘率.

    5)hive安装

    5.0)安装情况介绍

    master节点作为server,slaver节点作为client

    master节点安装mysql hive,slaver节点安装hive

    5.1)mysql安装

    5.1.1.sudo apt-get install mysql-server

    5.1.2.apt-get isntall mysql-client

    5.1.3.sudo apt-get install libmysqlclient-dev

    5.1.4.启动mysql服务

    service mysql start

    5.1.5.登录mysql

    mysql -uroot -phivepass(username=root,password=hivepass)

    5.2)hive安装

    5.2.1.hive安装

    docker cp /apache-hive-1.2.1-bin.tar.gz containerid:/usr/local/

    tar -zxvf apache-hive-1.2.1-bin.tar.gz

    5.2.2.环境变量配置

    vim /etc/profile

    添加以下:

    export HIVE_HOME=/usr/local/apache-hive-1.2.1-bin export PATH=$PATH:$HIVE_HOME/bin

    source /etc/profile

    5.2.3.hive配置文件

    5.2.3.1配置文件重命名

    cd $HIVE_HOME/conf

    cp hive-default.xml.template hive-site.xml 5.2.3.2修改hive-site.xml

    修改以下项:

    <property>     <name>hive.exec.scratchdir</name>     <value>/tmp/hive</value>     <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>   </property>   <property>     <name>hive.exec.local.scratchdir</name>     <value>/tmp</value>     <description>Local scratch space for Hive jobs</description>   </property>   <property>     <name>hive.downloaded.resources.dir</name>     <value>/tmp</value>     <description>Temporary local directory for added resources in the remote file system.</description>   </property> <property>     <name>javax.jdo.option.ConnectionURL</name>     <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>     <description>JDBC connect string for a JDBC metastore</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionUserName</name>     <value>root</value>     <description>Username to use against metastore database</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionPassword</name>     <value>hivepass</value>     <description>password to use against metastore database</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionDriverName</name>     <value>com.mysql.jdbc.Driver</value>     <description>Driver class name for a JDBC metastore</description>   </property>

    <property>     <name>hive.server2.thrift.bind.host</name>     <value>172.17.0.2</value>     <description>Bind host on which to run the HiveServer2 Thrift service.</description>   </property>

    5.2.4.hive 元数据

    mysql-connector-java-5.1.39.jar下载地址:

    https://dev.mysql.com/downloads/connector/j/

    将 mysql-connector-java-5.1.39.jar 放入 $HIVE_HOME/lib 下

    5.2.5.为hive创建hdfs目录

    在 Hive 中创建表之前需要使用以下 HDFS 命令创建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中属性项 hive.metastore.warehouse.dir 的默认值) 目录并给它们赋写权限

    hdfs dfs -mkdir /tmp hdfs dfs -mkdir /usr/hive/warehouse hdfs dfs -chmod g+w /tmp hdfs dfs -chmod g+w /usr/hive/warehouse 5.2.6.运行hive

    5.2.6.1先运行 schematool 命令来执行初始化操作

    schematool -dbType mysql -initSchem 5.2.6.2启动mysql server服务

    service mysql start

    5.2.6.3启动hive

    输入hive

    出现如下则hive安装成功

    Logging initialized using configuration in file:/usr/local/apache-hive-1.2.1-bin/conf/hive-log4j.properties hive>

    5.2.7slaver节点安装hive

    1)hive安装

    docker cp /apache-hive-1.2.1-bin.tar.gz containerid:/usr/local/

    tar -zxvf apache-hive-1.2.1-bin.tar.gz

    2)环境变量配置

    vim /etc/profile

    添加以下:

    export HIVE_HOME=/usr/local/apache-hive-1.2.1-bin export PATH=$PATH:$HIVE_HOME/bin

    source /etc/profile

    3)hive配置文件

    3.1)配置文件重命名

    cd $HIVE_HOME/conf

    cp hive-default.xml.template hive-site.xml 3.2)修改hive-site.xml

    修改以下项:

    <property>     <name>hive.exec.scratchdir</name>     <value>/tmp/hive</value>     <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username> is created, with ${hive.scratch.dir.permission}.</description>   </property>   <property>     <name>hive.exec.local.scratchdir</name>     <value>/tmp</value>     <description>Local scratch space for Hive jobs</description>   </property>   <property>     <name>hive.downloaded.resources.dir</name>     <value>/tmp</value>     <description>Temporary local directory for added resources in the remote file system.</description>   </property> <property>     <name>javax.jdo.option.ConnectionURL</name>     <value>jdbc:mysql://172.17.0.2:3306/hive?createDatabaseIfNotExist=true</value>     <description>JDBC connect string for a JDBC metastore</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionUserName</name>     <value>root</value>     <description>Username to use against metastore database</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionPassword</name>     <value>hivepass</value>     <description>password to use against metastore database</description>   </property>

    <property>     <name>javax.jdo.option.ConnectionDriverName</name>     <value>com.mysql.jdbc.Driver</value>     <description>Driver class name for a JDBC metastore</description>   </property>

    <property>     <name>hive.server2.thrift.bind.host</name>     <value>172.17.0.2</value>     <description>Bind host on which to run the HiveServer2 Thrift service.</description>   </property>

    <property>       <name>hive.metastore.uris</name>     <value>thrift://172.17.0.2:9083</value>     </property>

    4)hive 元数据

    mysql-connector-java-5.1.39.jar下载地址:

    https://dev.mysql.com/downloads/connector/j/

    将 mysql-connector-java-5.1.39.jar 放入 $HIVE_HOME/lib 下

    5)为hive创建hdfs目录

    在 Hive 中创建表之前需要使用以下 HDFS 命令创建 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中属性项 hive.metastore.warehouse.dir 的默认值) 目录并给它们赋写权限

    hdfs dfs -mkdir /tmp hdfs dfs -mkdir /usr/hive/warehouse hdfs dfs -chmod g+w /tmp hdfs dfs -chmod g+w /usr/hive/warehouse

    5.2.7启动metastore

    参照:http://blog.csdn.net/reesun/article/details/8556078

    master节点

    service mysql start

    root@master:/# hive --service metastore Starting Hive Metastore Server slaver节点

    输入hive

    root@slaver1:/tmp/root# hive Logging initialized using configuration in file:/usr/local/apache-hive-1.2.1-bin/conf/hive-log4j.properties hive> 5.2.8启动hiveserver2

    master节点

    service mysql start

    slaver节点

    root@slaver1:/# beeline Beeline version 1.2.1 by Apache Hive beeline> !connect jdbc:hive2://172.17.0.2:10000/default Connecting to jdbc:hive2://172.17.0.2:10000/default Enter username for jdbc:hive2://172.17.0.2:10000/default: root Enter password for jdbc:hive2://172.17.0.2:10000/default: Connected to: Apache Hive (version 1.2.1) Driver: Hive JDBC (version 1.2.1) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://172.17.0.2:10000/default>

    出现以上则证明hiveserver2正常启动

    6)weave安装

    使用weave进行真正的完全分布式安装

    6.1weave安装

    要求:网络已翻墙

    master slaver节点均需要安装

    1.sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave 2.sudo chmod a+x /usr/local/bin/weave

    6.2weave启动 1.master节点所在主机 weave launch 2.slaver节点所在主机 weave launch master_ip 3.检查 netstat -na | grep 6783 6.3载入镜像 docker import hiveClient.tar docker import hiveServer.tar 6.4运行容器 1.slaver节点 weave run 10.0.0.3/24 -it -h slaver1 --net=none hive:client weave run 10.0.0.4/24 -it -h slaver2 --net=none hive:client docker attach containerid ./init.sh 2.master节点 weave run 10.0.0.2/24 -it -h master --net=none hive:server docker attach containerid ./init.sh 6.5暴露主机端口 weave expose 10.0.0.100/24(将本机加入weave子网) 6.6启动dfs yarn start-dfs.sh start-yarn.sh jps

    注意:不要使用172.17.0.2等docker使用的ip,防止冲突,所以前面设置的172.17.0.2等需要改为10.0.0.2等.

    转载请注明原文地址: https://ju.6miu.com/read-34033.html

    最新回复(0)