• hadoop完整安装


    1    安装环境

    Linux(RHEL6.4) hadoop(hadoop-2.6.5) JDK(jdk-8u121-linux-x64)

    服务器IP

    服务器主机名

    192.168.0.120

    Master

    192.168.0.121

    Slave1

    192.168.0.122

    Slave2

    192.168.0.123

    Slave3

    2    服务器准备

    2.1     修改服务器主机名

    [root@master ~]# vi /etc/sysconfig/network

                           

    其他主机

    2.2     SSH无密登录

    [root@master ~]# ssh-keygen -t rsa

     刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

        打开~/.ssh 下面有三个文件

        authorized_keys,已认证的keys

        id_rsa,私钥

        id_rsa.pub,公钥   三个文件。

        下面就是关键的地方了,(我们要做ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)

    ①在master上将公钥放到authorized_keys里。命令:

     cat id_rsa.pub >> authorized_keys

        ②将master上的authorized_keys放到其他linux的root/.ssh目录下。

           命令: scp authorized_keys slave1:root/.ssh       

                   sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。

        ④测试是否成功

           ssh slave1输入用户名密码,然后退出,再次ssh host2不用密码,直接进入系统。这就表示成功了。

    2.3     修改主机名映射

    [root@master ~]# vi /etc/hosts

    127.0.0.1 localhost

    192.168.0.120 master

    192.168.0.121 slave1

    192.168.0.122 slave2

    192.168.0.123 slave3

    拷贝到其他主机

    [root@master src]# scp /etc/hosts slave1:/etc/hosts

    2.4     关闭防火墙

    所有机器运行

    [root@master src]# service iptables stop

    [root@master src]# chkconfig iptables off

    2.5     重启所有电脑

    [root@master src]# shutdown -r now

    3    上传jdk,hadoop并配置环境变量。

    3.1     文件上传

    通过xftp将文件上传到linux中。将文件放到/usr/local/src中,四个linux都要操作。

    3.2     解压缩:

    [root@master src]#  tar -zxvf jdk-8u121-linux-x64.tar.gz

    [root@master src]# tar -zxvf hadoop-2.6.5.tar.gz

    安装到/usr/local/java  /usr/local/hadoop目录中

    [root@master src]# mv jdk1.8.0_121/ /usr/local/java

    [root@master src]# mv hadoop-2.6.5 /usr/local/hadoop

    3.3     设置环境变量

    [root@master src]# vi temp

    添加:

    export JAVA_HOME=/usr/local/java

    export HADOOP_HOME=/usr/local/hadoop

    export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    [root@master src]# cat temp >> /etc/profile

    [root@master src]# source /etc/profile

        [root@master src]# scp temp slave1:/usr/local/src

    [root@master src]# scp temp slave2:/usr/local/src

    [root@master src]# scp temp slave3:/usr/local/src

    3.4     每台从机运行

    [root@slave1 src]# cat temp >> /etc/profile

    [root@slave1 src]# source /etc/profile

    4    修改hadoop配置文件

    hadoop配置过程:要实现分布式环境,配置过程是最为重要的,

    这里要涉及到的配置文件有7个:

    /usr/local/hadoop/etc/hadoop/hadoop-env.sh

    /usr/local/hadoop/etc/hadoop/yarn-env.sh

    /usr/local/hadoop/etc/hadoop/slaves

    /usr/local/hadoop/etc/hadoop/core-site.xml

    /usr/local/hadoop/etc/hadoop/hdfs-site.xml

    /usr/local/hadoop/etc/hadoop/mapred-site.xml

    /usr/local/hadoop/etc/hadoop/yarn-site.xml

    之后会分别介绍各个配置的的作用和配置关键

    4.1     配置文件1:hadoop-env.sh

    该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。

    故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/local/java)

    [root@master hadoop]# vi hadoop-env.sh

    4.2     配置文件2:yarn-env.sh

    该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

    在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/local/java)

    [root@master hadoop]# vi yarn-env.sh

    4.3     配置文件3:slaves

    该文件里面保存所有slave节点的信息,以本篇为例

    写入以下内容(hosts里从机的主机名):

    Slave1

    Slave2

    Slave3

    4.4     配置文件4:core-site.xml

    <configuration>

    <property>

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

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

    </property>

    <property>

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

    <value>hdfs://Master:9000</value>

    </property>

    </configuration>

    这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

    4.5     配置文件5:hdfs-site.xml

    <configuration>

    <property>

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

    <value>Master:50070</value>

    </property>

    <property>

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

    <value>Master:50090</value>

    </property>

    <property>

    <name>dfs.replication</name>

    <value>1</value>

    </property>

    </configuration>

    这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。

    4.6     配置文件6:mapred-site.xml

    <configuration>

    <property>

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

    <value>Master:9001</value>

     </property>

    <property>

    <name>mapred.map.tasks</name>

    <value>20</value>

    </property>

    <property>

    <name>mapred.reduce.tasks</name>

    <value>4</value>

    </property>

    <property>

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

    <value>yarn</value>

    </property>

    <property>

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

    <value>Master:10020</value>

    </property>

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

    <value>Master:19888</value>

    </property>

    </configuration>

    这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。

    其它属性为一些进程的端口配置,均配在主机下。

    4.7     配置文件7:yarn-site.xml

    <configuration>

    <property>

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

    <value>Master:8032</value>

    </property>

    <property>

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

     <value>Master:8030</value>

    </property>

    <property>

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

     <value>Master:8088</value>

    </property>

    <property>

    <name>yarn.resourcemanager.resource-tracker.address</name><value>Master:8031</value>

    </property>

    <property>

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

    <value>Master: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>

    </configuration>

    该文件为yarn框架的配置,主要是一些任务的启动位置

    4.8     将配置好的hadoop复制到其他节点

    [root@master etc]# scp -r hadoop/ slave1:/usr/local/hadoop/etc/

    [root@master etc]# scp -r hadoop/ slave2:/usr/local/hadoop/etc/

    [root@master etc]# scp -r hadoop/ slave3:/usr/local/hadoop/etc/

    5    启动hdfs

    [root@master etc]# start-dfs.sh

    Master上的进程

    Datanode上的线程

    6    启动yarn

    [root@master etc]# start-yarn.sh

    此时在Master上面运行的进程有:namenode secondarynamenode resourcemanager

    Slave1,Slave2,slave3上面运行的进程有:datanode nodemanager

    7    检查启动结果

    查看集群状态:./bin/hdfs dfsadmin –report

    查看文件块组成: ./bin/hdfsfsck / -files -blocks

    查看HDFS: http://192.168.0.120:50070(主机IP)

    查看RM: http:// 192.168.0.120:8088(主机IP)

    8    问题

    8.1     通过hdfs api访问hadoop的权限问题

    问题:

    Exception“org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=bikun, access=WRITE, inode="/user":user:supergroup:drwxr-xr-x” !!

    解决:

    在配置文件“/usr/local/hadoop/etc/hadoop/hdfs-site.xml”中加入以下配置内容后,再重新启动hadoop。

    <property>

    <name>dfs.permissions</name>

    <value>false</value>

    </property> 

  • 相关阅读:
    动态添加placeholder
    texworks编码问题
    c++ 小知识(不定期更新)
    写一个简单的 Makefile
    ubuntu 忘了密码
    遍历各种组合
    分形
    C++ 尾递归优化
    基于 QQBot 实现简易 QQ 机器人
    遇到问题:在函数中开辟动态内存(已解决)
  • 原文地址:https://www.cnblogs.com/heavenhome/p/6772890.html
Copyright © 2020-2023  润新知