zoukankan      html  css  js  c++  java
  • Hadoop入坑之路(一)

    入坑准备

      在开始学习Hadoop之前需要提前准备几个服务器。我在虚拟机上提前准备了4个Centos_7 64位的操作系统。并需要完成一下配置:

    网络配置:

      1.修改主机名

      2.设置映射关系

    [root@master ~]# vi /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    222.18.157.50 hdp-master
    222.18.157.51 hdp-slaver1
    222.18.157.52 hdp-slaver2
    222.18.157.53 hdp-slaver3

      3.修改IP地址

    [root@master ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    
    # ipaddr gateway netmask dns
    
    IPADDR=222.18.157.50
    GATEWAY=222.18.157.2
    NETMASK=255.255.255.0
    DNS1=114.114.114.114
    DNS2=8.8.8.8

      

    免密登陆设置:

      在整个学习过程中,将hdp-master(222.18.157.50)设置为主机。hdp-slaver1(222.18.157.51)、hdp-slaver2(222.18.157.52)、hdp-slaver3(222.18.157.53)设置为从机。

      在整个过程中,为了方便主机对从机的管理,需要进行免密登陆配置。

    [root@hdp-master ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:kJEWZWy/U0INFpu5C58hcpPeeKLyeearUfUUK7JffQ0 root@hdp-master
    The key's randomart image is:
    +---[RSA 2048]----+
    |      o=o ++.    |
    |      o+o..+.o   |
    |     .o..o* o E  |
    |       . =o=.. ..|
    |      . S o+o . o|
    |       = Oo=   . |
    |      . + B.     |
    |    .  +oo       |
    |     o==o.       |
    +----[SHA256]-----+

      可以发现目录中多了一个.ssh隐藏文件,进入可以查看已经生成了相应的公钥和私钥文件。

    [root@hdp-master ~]# cd .ssh/
    [root@hdp-master .ssh]# ll
    总用量 8
    -rw-------. 1 root root 1679 9月  10 21:26 id_rsa
    -rw-r--r--. 1 root root  397 9月  10 21:26 id_rsa.pub

      将公钥文件拷贝到从机上即可。

    [root@hdp-master .ssh]# ssh-copy-id root@hdp-slaver1
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@hdp-slaver1's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@hdp-slaver1'"
    and check to make sure that only the key(s) you wanted were added.

      这样hdp-master的公钥就成功的拷贝到了从机hdp-slaver1上。注意,免密登陆是单向的。

    JDK安装:

      由于Hadoop是用Java开发的,所以在正式安装Hadoop之前还需要安装JDK,点击这里下载JDK从官网上下载JDK的Linux版本的.tar.gz压缩包并解压。

      将JDK添加到环境变量中,打开/etc/profile文件,并在最后添加以下代码:

    export JAVA_HOME=/root/learn_hadoop/jdk
    export PATH=.:$PATH:$JAVA_HOME/bin

      再执行source /etc/profile命令,使修改后的配置文件生效。可以执行以下命令查看Java的版本:

    [root@hdp-master learn_hadoop]# java -version
    java version "1.8.0_181"
    Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

     

    Hadoop安装

      经过了上述繁琐的准备之后,现在开始正式安装hadoop了。同样需要从Hadoop官方网站上下载安装包。在这里我下载的Hadoop版本是3.1.1,将下载后的安装包解压。

    环境变量配置:

      打开/etc/profile文件并添加下列代码并执行source /etc/profile代码:

    export HADOOP_HOME=/root/learn_hadoop/hdp
    export PATH=.:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    修改core-site.xml

      在/root/learn_hadoop/hdp/etc/hadoop路径下修改core-site.xml配置文件:

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://222.18.157.50:9000</value>
    </property>
    </configuration>

    修改hdfs-site.xml

      在/root/learn_hadoop/hdp/etc/hadoop路径下修改hdfs-site.xml配置文件:

    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>/root/dfs/name</value>
    </property>
    
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>/root/dfs/data</value>
    </property>
    </configuration> 

      在Hadoop安装过程中的一些基本配置已经完成,为了避免在从机中进行相同的操作,只需要将主机中的包拷贝到从机中即可。

    HDFS客户端的操作

      HDFS客户端有多种形式:

        1.网页模式

        2.命令行模式

      客户端在那里运行并没有约束,只要运行客户端的机器能够和HDFS集群连网就行。

      文件的切块大小和存储的副本数量,都是由客户端决定!

      所谓的由客户端决定,是通过配置参数来定的。HDFS的客户端会读以下两个参数,来决定切块大小、副本数量:

        切块大小的参数: dfs.blocksize

        副本数量的参数: dfs.replication

    启动HDFS

      在第一次启动HDFS前需要初始化namenode的元数据目录。(这一步非常重要!!!

    hadoop namenode -format

      然后在hdp-master主机上启用namenode的进程

    hdfs --daemon start namenode

      在windows中用浏览器访问namenode提供的web端口:9870即可。

    hdfs://222.18.157.50:9870

      最后就可以启动集群中的datanode

    hdfs --daemon start datanode

      自动启动Hadoop集群

      1.  配置在目录 $HADOOP_HOME/etc/hadoop/ 下的 workers文件。将需要统一启动的集群主机名写入文件。

      2.  配置在目录 $HADOOP_HOME/sbin/ 下的文件 start-dfs.sh 和 stop-dfs.sh:

      分别在文件前面写入下列语句:

    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root

      3.  配置在目录 $HADOOP_HOME/sbin/ 下的文件 start-yarn.sh 和 stop-yarn.sh:

      分别在文件前边写入下列语句:

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

      配置完成后就可以在Linux终端执行 start ,stop 语句,实现自动启动集群功能。

    HDFS客户端命令行操作命令

      查看hdfs中的目录信息  

        hadoop fs -ls /hdfs路径 

      上传文件到hdfs中

        hadoop fs -put /本地文件  /aaa
    
        hadoop fs -copyFromLocal /本地文件  /hdfs路径   ##  copyFromLocal等价于 put 
    
        hadoop fs -moveFromLocal /本地文件  /hdfs路径  ## 跟copyFromLocal的区别是:从本地移动到hdfs中 

      下载文件到客户端本地磁盘

        hadoop fs -get /hdfs中的路径   /本地磁盘目录
    
        hadoop fs -copyToLocal /hdfs中的路径 /本地磁盘路径   ## 跟get等价
    
        hadoop fs -moveToLocal /hdfs路径  /本地路径  ## 从hdfs中移动到本地  

      在hdfs中创建文件夹

            hadoop fs -mkdir  -p /aaa/xxx        

      移动hdfs中的文件(更名)

        hadoop fs -mv /hdfs的路径  /hdfs的另一个路径

      删除hdfs中的文件或文件夹

        hadoop fs -rm -r /aaa 

      修改文件的权限

        hadoop fs -chown user:group /aaa
    
        hadoop fs -chmod 700 /aaa 

      追加内容到已存在的文件

        hadoop fs -appendToFile /本地文件   /hdfs中的文件 

      显示文本文件的内容

        hadoop fs -cat /hdfs中的文件
    
        hadoop fs -tail /hdfs中的文件
  • 相关阅读:
    Linux 查看dns运行状态
    Linux 查看网卡流量、网络端口
    Linux 查看磁盘读写速度IO使用情况
    Linux 查看系统状态
    Linux 查看进程
    Python RabbitMQ RPC实现
    [转]轻量级 Java Web 框架架构设计
    java集合总结【转】
    java 线程
    Geoserver基本使用、WMS服务发布与OpenLayers测试
  • 原文地址:https://www.cnblogs.com/zhangchao162/p/9623424.html
Copyright © 2011-2022 走看看