zoukankan      html  css  js  c++  java
  • Centos7中hadoop配置

    Centos7hadoop配置

    1.下载centos7安装教程:

    http://jingyan.baidu.com/article/a3aad71aa180e7b1fa009676.html

    (注意,到如下图这一步的时候,要注意,选择图形界面安装,并且勾选如图2两个选项,才会有自带的浏览器。)

     

    2.修改主机名

    2.1CentOS7以下的版本修改主机名的方法

    CentOS7以下的系统(包括CentOS6~CentOS6.5),我们通过修改HOSTNAME的方式即可得到想要的效果。如下所示,localhost是当前主机名,将其修改成了cjh141304092

    [root@localhost ~]# vim /etc/sysconfig/network

      1 # Created by anaconda

      2 NETWORKING_IPV6=no

      3 PEERNTP=no

      4 GATEWAY=115.29.207.247

      5 HOSTNAME=typecodes

    [root@localhost ~]# hostname cjh141304092 

    [root@cjh141304092 ~]#

    2 .2CentOS7以及CentOS7.1版本修改主机名的方法

    目前CentOS的最高版本是CentOS7.1,有较多CentOS6系列能使用的命令都不能使用或者做了有些改动。例如,在CentOS7或者CentOS7.1系统中,直接使用上面的方法修改主机名,最后都是没有效果的。它已经被简化为下面这条命令:

    [root@localhost ~]# hostnamectl set-hostname cjh141304092

    [root@cjh141304092 ~]#

    此方法无需重启直接生效。如果没有,关掉终端然后在打开即可。

    2.3域名映射

    进入root模式,然后用命令:vi /etc/hosts修改域名映射地址。

    如:192.168.0.53是主机cmasterip地址,那么就要在hosts文件中添加,格式为:

    ip地址(空格隔开)主机名

    192.168.0.53 cmster

    然后保存并退出,注意,每台子节点的主机都要配置主节点的域名映射

    3关闭防火墙

    root权限下执行以下两条指令,关闭防火墙并阻止其开机启动。

    systemctl stop firewalld.service#停止firewall

    systemctl disable firewalld.service#禁止firewall开机启动

     

    4.安装jdk

    将之前下载好的jdk复制到虚拟机中的/home/hadoop/目录下,(也就是用户根目录下)

    使用命令rpm ivh /home/joe/jdk-8u101-linux-x64.rpm解压安装

    安装完成后使用javac命令测试jdk是否安装成功,如果出现了如下图提示,说明安装jdk成功。(jdk可以在windows下下载好后用u盘传入到虚拟机中,然后执行安装)

     

    验证:

     

    5.ssh免密登录

        

        exit                             # 退出刚才的 ssh localhost

        cd ~/.ssh/                        # 若没有该目录,请先执行一次ssh localhost

        ssh-keygen -t rsa                   # 会有提示,都按回车就可以

        cat ./id_rsa.pub >> ./authorized_keys   # 加入授权

    ssh-keygen -t rsa生成注册码,然后根目录下就会产生一个.ssh文件,用ls -a命令可查看。

     

    .ssh目录下生成的id_rsa.pub文件最追加生产到authorized_keys文件中。(此文件原来没有,执行命令后会自动生成,如下图)

     

    验证是否可以免密登录:出现如下情况则表示成功

     

    以上步骤只是允许本机免密登录。但是要从另外一台机器上登录的话,还需要将另外台机器的id_rsa.pub公钥发送到要登录的那台机器上。例如A机器要ssh免密登录B机器的话,就要将上述生成的A本机器的id_rsa.pub公钥,发送到B机器用户根目录下。

    用命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.0.53:~/

     

    命令格式如下:

    scp 要发送的文件路径 目的机用户名@目的主机名(或者主机ip地址):目的机存放路径

    发送成功后会发现目的主机用户目录下就会出现相应文件,如下图。

     

    然后用cat ~/id_rsa.pub >> ~/.ssh/authorized_keys命令将文件追加到authorized_keys文件的内容后面。文件内容如下:

     

    authorized_keys内容变成这样表示成功了。

    然后用同样的步骤,将B机器的id_rsa.pub公钥传到A机器上。如果有三台机器,要互相访问的话,那么三台机器两两要配置,然后每台机器都执行以下命令,修改authorized_keys权限,这很重要,如果出现奇怪的错误表示,权限问题。

     

    chmod 700 ~/.ssh

    公钥复制完成后,将目的每台机器的sshd_config文件做如下配置:

     

    进入root权限才能修改:做如下修改:只需找到这三句话,然后将前面的#号去掉即可。然后保存退出。

     

    然后用exit退出root用户,用普通用户重启ssh服务,尝试ssh localhost登录,没让输入密码即表示成功了:

     

    在另外一台机器上尝试登录,无需密码直接登录则表示成功了。

     

    6.解压hadoop并做配置

    将下载好的 hadoop-3.0.0-alpha1.tar.gz,放到/home/hadoop目录下,然后用tar -zxvf hadoop-3.0.0-alpha1.tar.gz命令解压到当前目录下。(下载的时候注意不要下载成hadoop-3.0.0-alpha1.src.tar.gz这个是资源文件并不是我们要的配置文件压缩包)

    下载链接:

    http://112.5.240.8/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.0.0-alpha1/hadoop-3.0.0-alpha1.tar.gz

    解压:

     

    解压完成后出现如下目录

     

    我们需要配置的文件如下:

     

    6.1hadoop文件配置

    这是配置的主节点,其余子节点的配置要和主节点配置一模一样,否则可能会出现主节点启动了所有子节点的datanode,但是在浏览器查看节点信息的时候只有主节点一个,其余节点启动了却看不到信息。所以只要把这些配置文件复制到每个子节点即可。

    6.1.1.配置hadoop-env.sh

    原来前面有#号,将#号注释去掉,可以通过图形界面编辑,也可以通过vi编辑器编辑。

     

    6.1.2.配置core-site.xml文件

    <configuration>

    <property>

    <name>hadoop.tmp.dir</name>

    <value>/home/hadoop/hdfs/tmp</value>

    </property>

    <property>

    <name>fs.defaultFS</name>

    <value>hdfs://cjh141304092:9000</value>

    </property>

    <property>

    <name>fs.default.name</name>

    <value>hdfs://cjh141304092:9000</value>

    </property>

    <property>

      <name>hadoop.native.lib</name>

      <value>true</value>

      <description>Should native hadoop libraries, if present, be used.</description>

    </property>

    </configuration>

    6.1.3.配置hdfs-site.xml文件

    <configuration>

    <property>

    <name>dfs.http.address</name>

    <value>cjh141304092:50070</value>

    </property>

    <property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>cjh141304092:50090</value>

    </property>

    <property>

    <name>dfs.replication</name>

    <value>2</value>

    </property>

    <property>

    <name>dfs.namenode.name.dir</name>

    <value>file:/home/hadoop/hdfs/name</value>

    </property>

    <property>

    <name>dfs.datanode.data.dir</name>

    <value>file:/home/hadoop/hdfs/data</value>

    </property>

    </configuration>

    6.1.4.配置mapred-site.xml

    文件中没有mapred.xml文件,所以将mapred-site.xml.template重命名成mapred-site.xml

    编辑etc/hadoop/mapred-site.xml

    <configuration>

    <property>

    <name>mapred.job.tracker</name>

    <value>cjh141304092:9001</value>

    </property>

    <property>

    <name>mapreduce.framework.name</name>

    <value>yarn</value>

    </property>

    <property>

    <name>mapreduce.jobhistory.address</name>

    <value>cjh141304092:10020</value>

    </property>

    <property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>cjh141304092:19888</value>

    </property>

    </configuration>

    6.1.5.配置yarn-site.xml

    <configuration>

    <property>

    <name>yarn.resourcemanager.address</name>

    <value>cjh141304092:8032</value>

    </property>

    <property>

    <name>yarn.resourcemanager.scheduler.address</name>

    <value>cjh141304092:8030</value>

    </property>

    <property>

    <name>yarn.resourcemanager.webapp.address</name>

    <value>cjh141304092:8088</value>

    </property>

    <property>

    <name>yarn.resourcemanager.resource-tracker.address</name>

    <value>cjh141304092:8031</value>

    </property>

    <property>

    <name>yarn.resourcemanager.admin.address</name>

    <value>cjh141304092:8033</value>

    </property>

    <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    </property>

    <property>

    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

    <value>org.apache.hadoop.mapred.ShuffleHandler</value>

    </property>

    <property>

    <name>yarn.resourcemanager.hostname</name>

    <value>cjh141304092</value>

    </property>

    </configuration>

    6.2配置hadoop环境变量

       

     etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。

        /etc/bashrc: bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

    接着是与上述两个文件对应,但只对单个用户生效:

        ~/.bash_profile ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile~/.bash_login ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile~/.bash_login~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。

        ~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

    此外,修改 /etc/environment 这个文件也能实现环境变量的设置。/etc/environment 设置的也是全局变量,从文件本身的作用上来说, /etc/environment 设置的是整个系统的环境,而/etc/profile是设置所有用户的环境。有几点需注意:

        系统先读取 etc/profile 再读取 /etc/environment(还是反过来?)

        /etc/environment 中不能包含命令,即直接通过 VAR="..." 的方式设置,不使用 export

        使用 source /etc/environment 可以使变量设置在当前窗口立即生效,需注销/重启之后,才能对每个新终端窗口都生效。

    通过以下两条命令在系统中添加环境变量:其中HADOOP_HOME的路径为hadoop解压文件目录路径。

    [root@cjh1413040 hadoop]# export HADOOP_HOME=/home/hadoop/hadoop-3.0.0-alpha1

    [root@cjh1413040 hadoop]# export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    [root@cjh141304092 hadoop]# . /etc/profile #使环境变量立即生效。

    操作如下图:

     

    红框中的是验证hadoop是否安装成功,当出现如上信息的时候就是成功了。

    注意:

    以上两条环境变量的语句如果是以命令的形式执行的话,环境变量的有效期是有限的,当命令终端关闭之后,有效期结束,下次还得继续配置,为了永久有效,我们就要将其写入/etc/profile文件中和~/.bashrc文件中。如下图:

     

    因为这个文件需要root权限才能更改所以我们切换到root模式去修改文件。

     

    进入vi编辑界面,i开始输入,输入完成后按esc键,然后输入“:wq”保存并退出,输入的“:wq”在界面左下角。

     

    当写入~/.bashrc的时候要在hadoop用户模式下,因为这个文件是只有用户才能读取的。每个用户独立

    6.3hdfs格式化

    通过命令:hdfs namenode -format

     

    当出现如下successfully formatted表示格式化成功了

     

    6.4启动start-dfs.sh

     

    jps查看启动的任务如下:

     

    6.5启动start-yarn.sh

     

    start-yarn.sh又启动了两个任务节点,然后用jps查看

    6.6浏览器验证

    当成功启动以上的任务之后,就能打开如下网页了,

    路径格式为:http://主机名:8080

     

    这是第二个网页,端口号为50070

     

    50070可以看到HDFS的相关信息,8088可以看到Yarn的相关信息。

    至此。hadoop环境搭建完成。其余节点配置一样。

    7.测试案例:wordcount

    7.1创建数据源文件

    我们在hadoop-2.6.0根目录下创建一个file文件,然后在文件中写入任意内容:我在此处新建了两个:

     

    7.2将文件上传到hdfs.

    首先创建input文件夹,

     

    将刚才的两个mytest文件上传到input文件夹中,然后查看是否上传成功

     

    要查看hdfs文件也可登录50070的网页查看:

     

    7.3运行hadoop自带的example示例:

     

    命令格式为:

    hadoop jar 要执行的jar 要执行的函数 数据文件目录 输出结果目录

    执行进度可以在8088页面查看:

     

    查看统计结果:

     

    8.windowslinux发送文件

    PuTTY小巧方便。但若需要向网络中的Linux系统上传文件,则可以使用PuTTY官方提供的PSCP工具来实现上传。PSCP基于ssh协议实现,其用法与SCP命令非常类似。

    下载pscp后运行:

     

    也可以将他添加到环境变量中,

    然后向linux服务器上传文件:

     

    命令格式为:

    pscp 本地文件路径 目的主机用户@目的主机ip或者主机名(有做域名映射的话主机名才有效) :要存放的目录

  • 相关阅读:
    codeforces 616B Dinner with Emma
    codeforces 616A Comparing Two Long Integers
    codeforces 615C Running Track
    codeforces 612C Replace To Make Regular Bracket Sequence
    codeforces 612B HDD is Outdated Technology
    重写父类中的成员属性
    子类继承父类
    访问修饰符
    方法的参数
    实例化类
  • 原文地址:https://www.cnblogs.com/caijh/p/6511932.html
Copyright © 2011-2022 走看看