• 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或者主机名(有做域名映射的话主机名才有效) :要存放的目录

  • 相关阅读:
    Request的方法演示
    Request内置对象
    Servlet运行机制
    Servlet生命周期
    Servlet概念与配置
    http协议
    数据库连接池
    代码管理git托管到码云(github)开源中国
    事务
    类的执行先后顺序
  • 原文地址:https://www.cnblogs.com/caijh/p/6511932.html
Copyright © 2020-2023  润新知