美文网首页
hadoop在Linux下的简单配置

hadoop在Linux下的简单配置

作者: 如虎添 | 来源:发表于2019-12-11 20:05 被阅读0次

    来源:千峰科技王从明老师

    第一节:远程连接工具的使用

    1.1)使用远程工具的原因

    实际生产环境中,员工不会直接登陆服务器,而是通过远程连接工具,进行远程登陆。那么就需要知道服务器的IP地址,一个用户名和密码。

    1.2)常用的远程工具

    x-shell,scp 、finalshel、putty、MobaXterm
    

    1.3)使用MobaXterm

    1)安装(略)

    2)连接虚拟机(前提是物理机能ping通虚拟机)

    点击Session--->选择SSH---输入服务器IP--->指定用户名root---->ok---->输入密码(密码不可见)
    

    第二节:免密登陆认证

    2.1 使用免密登陆认证的原因

    当我们频繁的在一台机器A上连接另外一台机器B时,不论是复制文件还是删除文件,或者是进行其他操作。那么都要使用机器B的用户名和密码。每次都需要输入密码,那么效率降低了。这个时候,如果可以不输入密码,还有一定的安全性,可以防止黑客在中间截取信息。那么就需要一种安全认证技术。

    2.2 密码登陆认证的配置

    1)准备工作

    需求:机器A免密登陆机器B
    如:ssh localhost/127.0.0.1
    
    注意:如果使用ssh时,命令不存在,需要安装ssh的客户端软件
    [root@manager04 ~]# yum -y install openssh-clients.x86_64
    
    当机器A想免密登陆机器B时,需要在机器A上生成一对密钥,分别是一个私钥文件和公钥文件,还需要将机器A的公钥
    复制到机器B的相关用户的~/.ssh/目录下,并且更名为authorized_keys,还要保证此文件的权限600,.ssh目录的权限是700.
    
    生成密钥的命令
    [root@master04 ~]# ssh-keygen -t rsa       一路回车
    [root@master04 ~]# cd .ssh
    [root@master04 ~]# cp id_rsa.pub authorized_keys
    

    2)测试

    [root@master04 ~]# ssh 机器B的IP地址     
    
    案例:ssh   192.168.81.141
    说明:正确格式:ssh   username@ip
         如果不写username@,连接的用户默认与当前机器的用户名相同
    

    3)原理

    [图片上传失败...(image-3835b9-1576065751546)]

    第三节:Hadoop搭建的环境要求

    3.1 环境需求

    在搭建HDFS的完全分布式集群时,需要以下环境要求:

    --1. 防火墙需要关闭
    --2. 时间同步
    --3. 免密登陆认证
    --4. 域名映射
    --5. jdk环境
    --6. hadoop的环境变量
    

    3.2 防火墙的关闭

    [root@master04 ~]# service iptables status          #查看防火墙的状态
    [root@master04 ~]# service iptables stop            #临时关闭防火墙
    [root@master04 ~]# service iptables start           #临时开启防火墙
    
    [root@master04 ~]# chkconfig iptables off       #关闭防火墙自动启动功能
    [root@master04 ~]# chkconfig iptables on        #关闭防火墙自动启动功能
    [root@master04 ~]# chkconfig iptables --list        #关闭防火墙自动启动功能
    

    3.3 时间同步

    有些软件在集群上使用要求机器之间的时间差不能超过一定范围,比如HDFS要求集群的时间差不能超过30分钟,hbase要求集群上的时间差不能超出30秒,所以时间需要同步。
    
    可以临时同步一下网络上其他服务器的时间
    
    [root@master04 ~]# ntpdate -u 时间服务器的ip或者域名
    
    注意:如果命令不存在,安装ntpdate软件
    [root@master04 ~]# yum -y install ntpdate.x86_64
    
    可以同步微软的服务器
    [root@master04 ~]# ntpdate -u time.windows.com
    
    [root@master04 ~]# date    查看时间
    [root@master04 ~]# date -s 'yyyy-MM-dd HH:mm:ss'
    

    3.4 免密登陆认证

    参考第二节内容
    

    3.5 域名映射

    1)说明

    人类不习惯记忆数字的IP地址形式,更适合记忆一些有意义的见名知意的一些单词。因此在计算机领域中,有这样一种映射关系,即主机名与ip的映射,域名与ip的映射
    
    举例:
    www.baidu.com  169.128.12.234
    www.baidu.com  169.128.12.222
    
    master04    192.168.81.140
    

    2)配置域名映射

    [root@master04 ~]# vi /etc/hosts
    ..........省略.........
    192.168.81.140  manager04
    192.168.81.141  follower01
    192.168.81.142  follower02
    192.168.81.143  follower03
    192.168.81.144  follower04
    192.168.81.145  follower05
    192.168.81.146  follower06
    192.168.81.147  follower07
    192.168.81.148  follower08
    
    测试:是否能使用主机名,远程连接自己
    [root@master04 ~]# ssh manager04
    

    3.6 jdk环境搭建

    1)准备工作

    设计两个目录
    /opt/software/  #用来存储软件包
    /opt/apps/      #用来安装软件的
    
    将jdk-8u162-linux-x64.tar.gz 和hadoop-2.7.6.tar.gz 上传到/opt/software里
    

    2)解压jdk到/opt/apps/

    [root@master04 software]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/apps/
    

    3)更名操作

    [root@master04 software]# cd ../apps/
    [root@master04 apps]#  mv jdk1.8.0_162/ jdk
    

    4)配置环境变量

    4.1)说明

    系统级别的文件:/etc/profile
    用户级别的文件:~/.bash_profile         选择此文件进行配置
                  ~/.bashrc
    

    4.2)配置

    [root@master04 apps]# vi ~/.bash_profile
    ........省略.........
    # java environment
    export JAVA_HOME=/opt/apps/jdk
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    

    4.3)使当前窗口生效(或者reboot)

    [root@master04 apps]# source ~/.bash_profile
    

    4.4)验证

    [root@master04 apps]# java -version
    [root@master04 apps]# javac
    

    3.7 hadoop环境变量的配置

    1)解压缩

    [root@master04 software]# tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps/
    

    2)更名

    [root@master04 software]# cd ../apps/
    [root@master04 apps]# mv hadoop-2.7.6/ hadoop
    

    3)配置

    [root@master04 apps]# vi ~/.bash_profile
    
    ........省略.........
    # hadoop environment
    export HADOOP_HOME=/opt/apps/hadoop
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    

    4)使当前窗口生效

    [root@manager04 apps]# source ~/.bash_profile
    

    5)验证

    [root@manager04 apps]# hadoop version
    Hadoop 2.7.6
    ........省略.........
    

    第四节:HDFS的完全分布式集群

    4.1 搭建方式的说明:

    --1. 独立模式
    --2. 伪分布式模式
    --3. 完全分布式模式
    
    
    总结:
    -1 独立模式和伪分布式模式,
        --相同点:都是在单节点上进行安装。
        --不同点:独立模式使用的本地文件系统即linux文件系统,没有守护进程
                 伪分布式模式使用的分布式文件系统,即分布式思想
    -2 伪分布式模式和完全分布式模式
        --相同点:都是使用了分布式思想,即使用分布式文件系统
                 都是独立的守护进程,每个进程单独占用一个jvm.
                 (namenode,datanode,secondarynamenode)
        --不同点:伪分布式使用单节点来维护整个分布式文件系统,
                而完全分布式使用多台机器(节点)来共同维护一个分布式文件系统
                伪分布式只有一个datanode
                完全分布式有N个datanode            
    

    4.2 完全分布式集群的配置

    1)守护进程布局

    master04:       namenode    datanode    secondarynamenode   resourcemanager  nodemanager
    worker1:        datanode    nodemanager
    worker2:        datanode    nodemanager
    

    2)配置文件的说明

    需要修改:$HADOOP_HOME/etc/hadoop/目录下的一些文件
    -- core-site.mxl
    -- hdfs-site.xml
    -- mapred-site.xml
    -- yarn-site.xml
    -- slaves
    -- hadoop-env.sh
    -- yarn-env.sh
    

    4.3 配置步骤

    1)配置core-site.xml

    [root@master04 hadoop]# pwd
    /opt/apps/hadoop/etc/hadoop
    [root@master04 hadoop]# vi core-site.xml
    
    <!-- 文件系统的scheme,是必须配置的,相当于分布式文件系统的入口-->
    <property>
      <name>fs.defaultFS</name>l
      <value>hdfs://master04:8020</value>
    </property>
    
    <!-- hadoop文件系统其他目录的依赖(基础)   -->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/opt/apps/hadoop/tmp</value>
    </property>
    

    2)hdfs-site.xml

    [root@master04 hadoop]# vi hdfs-site.xml
    
    <!-- 守护进程namenode所管理数据的存储路径 :元数据fsimage和edit日志文件-->
    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/opt/apps/hadoop/tmp/dfs/name</value>
    </property>
    
    <!-- 守护进程datanode所管理数据的存储路径,管理的是文件块 -->
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file://${hadoop.tmp.dir}/dfs/data</value>
    </property>
    
    <!-- 文件块的副本数,值不能超过datanode节点的个数 -->
    <property>
      <name>dfs.replication</name>
      <value>3</value>
    </property>
    
    <!-- secondaryname的http协议的ip地址和端口号 -->
    <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>master04:50090</value>
    </property>
    

    3)mapred-site.xml

    [root@master04 hadoop]# cp mapred-site.xml.template mapred-site.xml
    [root@master04 hadoop]# vi mapred-site.xml
    
    <!-- 配置mapreduce运行时使用的框架技术:yarn,资源管理器 -->
    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
    

    4)yarn-site.xml

    [root@master04 hadoop]# vi yarn-site.xml
    
    <!-- 使用yarn的核心技术:shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 配置resoucemanager的主机名 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master04</value>
    </property> 
    

    5)slaves文件:配置所有datanode节点的主机名

    [root@master04 hadoop]# vi slaves
    master04
    worker1
    worker2
    

    6)hadoop-env.sh

    [root@master04 hadoop]# vi hadoop-env.sh
    ......省略........
    找到下面这两行,设置jdk的路径 
    # The java implementation to use.
    export JAVA_HOME=/opt/apps/jdk
    ......省略........
    

    7)yarn-env.sh

    [root@master04 hadoop]# vi yarn-env.sh
    ......省略........
    找到下面这两行,设置jdk的路径 
    # some Java parameters
    export JAVA_HOME=/opt/apps/jdk
    ......省略........
    

    3.6 搭建另外两台机器:worker1 worker2

    1)说明,使用完整克隆,克隆manager

    优势:
    -- 不用在重新配置所需要的环境(jdk,hadoop,防火墙,免密,域名映射)
    -- 不用再重新配置core-site.xml等7个文件
    -- 免密登陆认证:三台机器的私钥和公钥是同一套
    

    2)克隆步骤

    右键点机要克隆的机器--->管理-->克隆--->下一步-->虚拟机的当前状态-->创建完整克隆--命名--->完成
    CentOS_6.5_64_slave1    192.168.81.131
    CentOS_6.5_64_slave2    192.168.81.132
    

    3)修改新克隆机器的主机名

    #使用root用户修改主机名为slave1       另一台机器同样的操作
    
    [root@manager ~]# vi /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=slave1
    

    4)修改新克隆机器的IP地址

    [root@manager ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
    
    修改克隆机器的IPADDR、DEVICE、HWADDR
    IPADDR=192.168.81.131        #另一台机器同样的操作
    DEVICE=eth0                  #不变,修改70-persistent-net.rules的名字为eth0
    HWADDR=                     # 参考70-persistent-net.rules里新生成的HWADDR
    
    [root@manager ~]# vi /etc/udev/rules.d/70-persistent-net.rules
    删除或注释掉旧的MAC地址,别忘记eth1改为eth0
    
    [root@manager ~]# service network restart
    [root@manager ~]# reboot
    

    5)重启后,验证免密登陆认证是否有效

    目的:去掉第一次的询问
    

    3.7 格式化集群

    1)目的

    目的1:使分布式文件系统可用
    目的2:生成clusterID(分布式文件系统的唯一标识符)
    目的3:生成hadoop.tmp.dir这个属性配置的路径,以及生成namenode守护进程所管理数据的存储路径
    目的4:生成namenode守护进程所管理的元数据的存储文件fsimage
    

    2)格式化的命令

    注意:一定要选择namenode所在的节点上进行格式化

    [root@manager ~]# hdfs namenode -format
    
    出现 Storage directory /opt/apps/hadoop/tmp/dfs/name has been successfully formatted.
    表示成功
    

    3.8 开启集群

    1)开启集群的命令

    start-dfs.sh    # 开启hdfs的相关守护进程的,namenode,datanode,secondaryname
    start-yarn.sh   # 开启yarn的相关守护进程的, resoucemanager,nodemanager
    start-all.sh    # 开启hdfs和yarn的守护进程
    hadoop-daemon.sh    #y用于单独开启或关闭守护进程的
    
    hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]
    
    stop-dfs.sh
    stop-yarn.sh
    stop-all.sh
    

    2)使用jps查看节点上的守护进程

    [root@manager ~]# jps
    

    3)使用http协议查看分布式文件系统

    http://192.168.81.130:50070
    
    1. 第一次开启集群时
    --1:生成了logs目录
    --2:在每一个datanode节点生成了${hadoop.tmp.dir}/dfs/data 目录,用于存储文件块。
    --3:在${hadoop.tmp.dir}/dfs/name/current目录下生成了edit日志文件
    

    5)暴力解决节点不正常的方式

    --1. 删除三台机器上的tmp目录和logs目录
    --2. 在manager机器上重新格式化 
    

    第四节:HDFS的常用shell指令

    3.1 常用指令:

    hdfs dfs -mkdir  /input
    hdfs dfs -put ./word.txt /input/
    hdfs dfs -cat /input/word.txt
    ........
    

    第五节:windows平台配置hadoop环境

    4.1 windows环境配置

    4.1.1 解压hadoop-2.7.6.tar.gz到本地磁盘,如下图:

    D02-4-1.1.jpg

    4.1.2 配置环境变量

    - HADOOP_HOME:  D:\apps\hadoop-2.7.6
    - PATH: %HADOOP_HOME%\bin 和 %HADOOP_HOME%\sbin
    

    4.1.3 由于Hadoop是在32位系统上编译的,并且对windows支持不好,所以需要把64的编译本地库文件(下图的两个文件),放入bin目录中。

    D02-4-1.2.jpg

    10.1.4 验证环境变量是否生效:

    C:\Users\Michael>hadoop version
    

    10.1.5 如果报错:Error: JAVA_HOME is incorrectly set

    那就找到etc/hadoop/下的hadoop-env.cmd,修改JAVA_HOME的内容如下格式即可
    set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_172
    

    4.2 HDFS的资源jar包提取

    为了方便开发,我们可以将相关的jar提取出来。


    D02-4-1.3.jpg
    1. 在hadoop-2.7.6目录下创建以上目录(参考图片)
    2. 进入share目录中的doc子目录,搜索default.xml。将四个默认的xml文件copy到_default目录中,方便以后查看
    3. 进入share目录中,搜索*.jar。将搜索到的所有jar文件copy到_jars目录下,重复的跳过。大约208个jar包左右。
    4. 在_jars目录中,搜索test,将搜索到的jar包剪切到_tests目录下。这是一些关于程序测试的jar包,提取出来。大约36个左右
    5. 在_jars目录中,搜索source,将搜索到的jar包剪切到_sources目录下。这些jar包是hadoop的源码包。想看源码的可以使用,大约28个
    6. 此时,_jars目录中剩下的都是hadoop的相关api的jar包,大约144个。
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:hadoop在Linux下的简单配置

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