精华内容
下载资源
问答
  • 大数据平台开发

    2020-06-19 18:16:57
    大数据平台开发 亮点 前期在操作过程中还是有很多坎坷和插曲,印象最为深刻的就是我那台笔记本进入bios不是重启狂按f10进入的,在我各种琢磨不透的时候,在百度查询各种资料以后最后发现,原来我这台电脑左侧有个...

    大数据平台开发

    亮点
    前期在操作过程中还是有很多坎坷和插曲,印象最为深刻的就是我那台笔记本进入bios不是重启狂按f10进入的,在我各种琢磨不透的时候,在百度查询各种资料以后最后发现,原来我这台电脑左侧有个小孔得用针插入开启电脑才能进入bios调整设置,我跟发现新大陆似的,就心想哦原来还有这种开机方式的,然后再调整设置之后虚拟机就可以正常的操作和运行了。然后还遇到过下载的文件就两个程序之间不兼容,这就很烦了,也是费劲功夫从网上下载兼容的版本使用,这是最让我头疼的,因为这些问题拖缓了我,就我跟不上上课的进度,然后我的性格又是极慢的,就这两者放在一起就让我总是和老师慢一拍,我总是要依赖室友的帮忙,然后课后再延长时间去完成课程。不过好在的是勉勉强强都能在下次上课前跟上进度,后面遇到的问题也都是小问题,像程序连接失败,代码少打了几个或者输错了几个老是重输,不小心按错奇怪的键导致虚拟机黑屏导致有时候整个过程我得再重新做一遍,包括强调了多次的exit还是会忘记等等,不过在把问题通通解决之后,就安装完成的成就感,让我感觉非常满足,感觉很充实。

    高可用安装
    HA安装方案
    在这里插入图片描述
    分发jdk到node02,ndoe03,node04上

    scp jdk-7u67-linux-x64.rpm node02:`pwd`
    scp jdk-7u67-linux-x64.rpm node03:`pwd`
    scp jdk-7u67-linux-x64.rpm node04:`pwd`
    

    并在Xshell的全部会话栏里一起ll,看jdk是否发送成功。

    给node02,node03,node04分别安装jdk

    分别在node02,node03,node04上执行rpm安装命令。

    rpm -i jdk-7u67-linux-x64.rpm
    

    在node01上cd /etc,在此目录下把profile文件分发到node02、03、04上。

    scp profile node04:`pwd`
    

    利用Xshell全部会话栏,source/etc/profile
    利用Xshell全部会话栏,jps,看02、03、04这三台机子的jdk是否装好

    同步所有服务器时间
    -date 查看机子当前的时间
    时间不能差太大,否则集群启动后某些进程跑不起来

    1.yum进行时间同步器的安装

     -yum -y install ntp
    

    2.执行同步命令

    -yum -y install ntp
    -ntpdate time1.aliyun.com   #和阿里云服务器时间同步
    

    装机之前的配置文件检查

    1.cat /etc/sysconfig/network

    ​查看HOSTNAME是否正确
    在这里插入图片描述

    2.cat /etc/hosts

    ​查看IP映射是否正确
    若不正确,可以改文件,也可以把node01上的用scp分发过去.。

    3.cat /etc/sysconfig/selinux

    里是否​SELINUX=disabled

    4.service iptables status

    ​查看防火墙是否关闭
    在这里插入图片描述
    NN与其他三台机子的免秘钥设置

    1.在家目录下 ll –a看下有无.ssh文件,如果没有就ssh loalhost一下(记得ssh localhost后exit)

    2.-cd /.ssh,并ll查看一下

    3.把node01的公钥发给其他三台机子

    scp id_dsa.pub node02:`pwd`/node01.pub
    scp id_dsa.pub node03:`pwd`/node01.pub
    scp id_dsa.pub node04:`pwd`/node01.pub
    

    在node02的.ssh目录下看是否有node01.pub
    如果有,那就追加到authorized_keys

    cat node01.pub >> authorized_keys
    

    并且在node01上ssh node02看是否免密钥了
    记住exit
    5.同理给其他节点发送公钥并在各个节点上把node01的公钥追加上
    scp id_dsa.pub node03:pwd/node01.pub
    scp id_dsa.pub node04:pwd/node01.pub
    两个NN间互相免密钥
    node01与node02间互相免密钥: node01可免密钥登录node02,那现需node02上能免密钥登node01,所以
    在node02上:

    ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    

    ssh localhost验证一下
    分发到node01上:

    scp id_dsa.pub node01:`pwd`/node02.pub
    

    ssh node01验证一下
    在这里插入图片描述
    修改namenode的一些配置信息
    1.vi hdfs-site.xml

    <configuration>
       <property>
            <name>dfs.replication</name>
            <value>3</value>
        </property>
    
    	<property>
      		<name>dfs.nameservices</name>
      		<value>mycluster</value>
    	</property>
    	<property>
      		<name>dfs.ha.namenodes.mycluster</name>
      		<value>nn1,nn2</value>
    	</property>
    	<property>
      		<name>dfs.namenode.rpc-address.mycluster.nn1</name>
      		<value>node01:8020</value>
    	</property>
    	<property>
      		<name>dfs.namenode.rpc-address.mycluster.nn2</name>
      		<value>node02:8020</value>
    	</property>
    	<property>
      		<name>dfs.namenode.http-address.mycluster.nn1</name>
      		<value>node01:50070</value>
    	</property>
    	<property>
      		<name>dfs.namenode.http-address.mycluster.nn2</name>
     		<value>node02:50070</value>
    	</property>
    
    	<property>
      		<name>dfs.namenode.shared.edits.dir</name>
      		<value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
    	</property>
    
    	<property>
      		<name>dfs.journalnode.edits.dir</name>
      		<value>/var/gf/hadoop/ha/jn</value>
    	</property>
    
    	<property>
      		<name>dfs.client.failover.proxy.provider.mycluster</name>
      		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    	</property>
    	<property>
      		<name>dfs.ha.fencing.methods</name>
      		<value>sshfence</value>
    	</property>
    	<property>
      		<name>dfs.ha.fencing.ssh.private-key-files</name>
      		<value>/root/.ssh/id_dsa</value>
    	</property>
    
    	<property>
       		<name>dfs.ha.automatic-failover.enabled</name>
       		<value>true</value>
     	</property>
    </configuration>
    
    2.vi core-site.xml
    
    ```powershell
    <!– 集群名称mycluster-->
    <property>
      <name>fs.defaultFS</name>
     <value>hdfs://mycluster</value>
     </property>
     <!– zookeeper布署的位置-->
     <property>
      <name>ha.zookeeper.quorum</name>
       <value>node02:2181,node03:2181,node04:2181</value>
    </property>
    

    vi slaves

    node02
    node03
    node04
    

    3.安装hadoop

    cd /opt,将其下的gf目录分发到node02、03、04

    scp –r  ldy/ node02:`pwd`
    scp –r  ldy/ node03:`pwd`
    scp –r  ldy/ node04:`pwd`
    

    4.将hdfs-site.xml和core-site.xml分发到node02、03、04

    scp hdfs-site.xml core-site.xml node02:`pwd`
    scp hdfs-site.xml core-site.xml node03:`pwd`
    scp hdfs-site.xml core-site.xml node04:`pwd`
    

    安装zookeeper

    1.解压安装zookeeper

    tar xf zookeeper-3.4.6.tar.gz -C /opt/gf
    

    2.修改zookeeper的配置文件

    cd /opt/gf/zookeeper-3.4.6/conf
    

    给zoo_sample.cfg改名

    cp zoo_sample.cfg zoo.cfg
    

    vi zoo.cfg

    改dataDir=/var/ldy/zk

    并在末尾追加

    server.1=node04:2888:3888
    
    server.2=node05:2888:3888
    
    server.3=node06:2888:3888
    

    其中2888主从通信端口,3888是当主挂断后进行选举机制的端口
    3.把zookeeper分发到其他节点

    scp -r zookeeper-3.4.6/ node05:`pwd`
    scp -r zookeeper-3.4.6/ node06:`pwd`
    

    并用ll /opt/gf检查下看分发成功没
    4.给每台机子创建刚配置文件里的路径

    mkdir -p /var/gf/zk
    

    对node02来说

    echo 1 > /var/gf/zk/myid
    cat /var/gf/zk/myid
    

    对node03来说

    echo 2 > /var/gf/zk/myid
    cat /var/gf/zk/myid
    

    对node04来说

    echo 3 > /var/gf/zk/myid
    cat /var/gf/zk/myid
    
    

    5.在/etc/profile里面配置

    export ZOOKEEPER_HOME=/opt/gf/zookeeper-3.4.6
    export PATH=$PATH:/usr/java/jdk1.7.0_67/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZOOKEEPER_HOME/bin
    

    6.然后在把/etc/profile分发到其他node03、node04

    scp /etc/profile node03:/etc
    scp /etc/profile node04:/etc
    

    绝对不要忘记在node02、03、04里source/etc/profile验证source这句是否完成,输入zkCli.s,按tab可以把名字补全zkCli.sh
    7.启动zookeeper

    全部会话:zkServer.sh start

    接着用zkServer.sh status查看每个zookeeper节点的状态
    注:如果启动不起来,请把/etc/profile里的JAVA_HOME改成绝对路径。
    启动journalnode

    在01、02、03三台机子上分别把journalnode启动起来
    hadoop-daemon.sh start journalnode
    用jps检查下进程启起来了没

    格式化任一namenode
    随意挑一台namenode上执行hdfs namenode –format

    另一台namenode不用执行,否则clusterID变了,找不到集群了。

    然后,启动刚刚格式化的那太namenode:

    hadoop-daemon.sh start namenode
    

    给另一namenode同步数据
    在另外一台namenode上执行

    dfs namenode -bootstrapStandby
    

    格式化zkfc

    hdfs zkfc -formatZK
    在node04上执行zkCli.sh打开zookeeper客户端看hadoop-ha是否打开
    

    启动hdfs集群
    在node01上启动hdfs集群:

    start-dfs.sh
    

    注意:如果那个节点没起来到hadoop目录下去看那个node的日志文件log
    *

    用浏览器访问node01:50070和node02:50070

    关闭集群命令:

    stop-dfs.sh
    

    关闭zookeeper命令:

    zkServer.sh stop
    

    为MapReduce做准备
    把mapred-site.xml.template留个备份,并且改下名字

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

    在mapred-site.xml里添加如下property

    <property>
    	<name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    

    在yarn-site.xml里添加如下property

    <property>
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
    </property>
    <property>
       <name>yarn.resourcemanager.ha.enabled</name>
       <value>true</value>
    </property>
    <property>
       <name>yarn.resourcemanager.cluster-id</name>
       <value>cluster1</value>
    </property>
    <property>
       <name>yarn.resourcemanager.ha.rm-ids</name>
       <value>rm1,rm2</value>
    </property>
    <property>
       <name>yarn.resourcemanager.hostname.rm1</name>
       <value>node03</value>
    </property>
    <property>
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>node04</value>
    </property>
    <property>
       <name>yarn.resourcemanager.zk-address</name>
       <value>node02:2181,node03:2181,node04:2181</value>
    </property>
    

    把mapred-site.xml和yarn-site.xml 分发到node02、03、04

    scp mapred-site.xml yarn-site.xml node04:`pwd`
    scp mapred-site.xml yarn-site.xml node05:`pwd`
    scp mapred-site.xml yarn-site.xml node06:`pwd`
    

    由于node03和node04都是resourcemanager,所以它俩应该相互免密钥node03上免密钥登录node04:
    在node03的.ssh目录下生成密钥

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

    并追加到自己authorized_keys

    cat id_dsa.pub >> authorized_keys
    

    用ssh localhost验证看是否需要密码,别忘了exit
    将node03 的公钥分发到node04

    scp id_dsa.pub node04:`pwd`/node03.pub
    

    在node04的.ssh目录下,追加node03.pub

    cat node03.pub >> authorized_keys
    

    在node03上ssh node04,看是否免密钥
    node04上免密钥登录node03:
    在node04的.ssh目录下生成密钥

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

    并追加到自己authorized_keys

    cat id_dsa.pub >> authorized_keys
    

    用ssh localhost验证看是否需要密码,别忘了exit
    将node04 的公钥分发到node03

    scp id_dsa.pub node03:`pwd`/node04.pub
    

    在node04的.ssh目录下,追加node03.pub

    cat node03.pub >> authorized_keys
    

    在node04上ssh node03,看是否免密钥

    1.启动zookeeper,全部会话zkServer.sh start
    2.在node01上启动hdfs,start-dfs.sh
    3.在node01上启动yarn,start-yarn.sh
    4.在node05、06上分别启动resourcemanger,yarn-daemon.sh start resourcemanger
    5.全部会话jps,看进程全不全

    在浏览器访问node05:8088,查看resourcemanger管理的内容

    跑wordcount

    1.cd /opt/ldy/hadoop-2.6.5/share/hadoop/mapreduce
    

    2.在hdfs里建立输入目录和输出目录

    hdfs dfs -mkdir -p /data/in
    hdfs dfs -mkdir -p /data/out
    

    3.将要统计数据的文件上传到输入目录并查看

    hdfs dfs -put ~/500miles.txt /data/in	
    hdfs dfs -ls /data/in
    

    4.运行wordcount(注意:此时的/data/out必须是空目录)

    hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/in /data/out/result
    

    5.查看运行结果

    hdfs dfs -ls /data/out/result 
    hdfs dfs -cat /data/out/result/part-r-00000
    

    关闭集群:

    #node01
    stop-dfs.sh 
    #node01
    stop-yarn.sh #(停止nodemanager)
    #node03,node04
    yarn-daemon.sh stop resourcemanager
    #Node02、03、04
    zkServer.sh stop
    

    在windows下配置hadoop的环境

    更改环境变量,增加HADOOP_HOME
    在这里插入图片描述
    并在path中添加HADOOP_HOME中添加路径
    在这里插入图片描述
    然后再新建一个变量HADOOP_USER_NAME
    在这里插入图片描述
    把hadoop.dll拷贝到以下路径
    在这里插入图片描述
    安装eclipse-mars

    在ecliose里把hadoop相关信息填一下在这里插入图片描述
    在这里插入图片描述
    在eclipse里导入自己建一个包库
    在这里插入图片描述
    把jar包导入刚建的包库
    在这里插入图片描述
    把刚建的包引入到project里在这里插入图片描述
    把JUnit包库引入到project里在这里插入图片描述
    利用xftp把hdfs-site.xml,core-site.xml等几个xml放到project的scr目录在这里插入图片描述

    安装完成

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,686
精华内容 2,674
关键字:

大数据平台开发