hadoop2.6.5集群安装及mapreduce测试运行

- 环境准备

系统:centos6.5
虚拟机:VMware Workstation
jdk文件:jdk-7u67-linux-x64.tar.gz
hadoop文件:hadoop-2.6.5.tar.gz
这里搭建集群包括4个节点,1个Master,3个Salve ,需要实现节点间局域网连接,可以相互ping通。
规划节点IP地址(可自定义),下面是采用机子原有IP:
Master.Hadoop 192.168.193.130
Salve1.Hadoop 192.168.193.131
Salve2.Hadoop 192.168.193.132
Salve3.Hadoop 192.168.193.133

环境设置

  1. 修改机器名称

    将机器名字修改为Master.Hadoop,命令:hostname Master.Hadoop
    vim /etc/sysconfig/network
    将localhost对应修改为Master.Hadoop

  2. 修改机器IP
    (注意:此步操作过后,会导致无法连接外网,后面需要解决这个问题,可不修改ip,下述步骤采用不修改ip的方式,可略过该步)
    vim /etc/sysconfig/network-scripts/ifcfg-eth0
    增加一行:IPADDR xxxxxx(ip地址)
    然后,source应用改变,或者reboot重启
    source /etc/sysconfig/network-scripts/ifcfg-eth0
    查看IP是否修正成功:ifconfig
  3. 修改host配置文件
    将机器名称与机器ip对应,方便后续对应;
    vim /etc/hosts
    添加如下内容:
    192.168.193.130 Master.Hadoop
    192.168.193.131 Salve1.Hadoop
    192.168.193.132 Salve2.Hadoop
    192.168.193.133 Salve3.Hadoop
    然后将四台机器均进行相同的操作
    测试机器间是否可以相互ping通,如下:
    分别用ping Salve1.Hadoop或ping 192.168.193.131尝试。

  4. 创建hadoop用户组
    一般要对集群的说有机器之间建立无密码ssh,方便集群之间的通信,设一个root外的用户可以避免暴露过多权限给hadoop。
    先创建hadoop用户组:groupadd hadoop
    添加用户:useradd hadoop -g hadoop
    添加用户密码:passwd hadoop

  5. ssh无密码验证
    1、查看是否安装openssh与rsync(远程数据同步工具,可通过lan或wlan快速同步多套主机间文件)
    rpm -qa | grep openssh
    rpm -qa | grep rsync
    若未安装则进行安装
    yum install ssh
    yum install rsync
    2、切换至hadoop用户
    su hadoop
    3、配置Master可登陆其他Salve主机
    3.1 ssh-keygen:生成密码对,会在文件夹下生成id_rsa与id_rsa.pub两个文件。
    查看:ll ./.ssh
    3.2 将id_rsa.pub追加到authorized_keys文件中
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    3.3 修改authorized_keys权限,默认权限700
    chmod 600 ~/.ssh/authorized_keys
    3.4 修改ssh配置文件,需切换root用户
    vim /etc/ssh/sshd_config
    找到如下三项:
    RSAAuthentication yes # 启用 RSA 认证
    PubkeyAuthentication yes # 启用公钥私钥配对认证方式
    AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径
    重启ssh服务
    service sshd restart
    3.5 测试是否成功
    ssh localhost
    中间填入yes,再次输入,不要求填写密码即成功。

  6. master与salve间无密码互通
    1、每个机器按照第5步运行一遍
    2、将几台机器实现相互间无密码连通,剩下的操作在一台机器上操作即可,利用scp命令进行数据传输,以Master与Salve1之间的操作为例;
    scp ~/.ssh/authorized_keys [email protected]:~/
    或scp ~/.ssh/authorized_keys [email protected]:~/
    3、为了操作方便,下述操作均在Master上操做,切换至Salve1,
    ssh Salve1.hadoop
    此时机器间还未实现无密码传输,需输入预先设定的密码
    4、此时已登入Salve1,将从Master中通过scp传入的authorized_keys 添加到Salve1下.ssh下authorized_keys中
    cat ~/authorized_keys >> ~/.ssh/authorized_keys
    5、从其他机器导入authorized_keys没用了,可以删除了
    rm ~/authorized_keys
    6、切换回Master机器,测试是否可无密码登陆Salve1
    ssh Salve1.Hadoop或ssh 192.168.193.131
    此时可发现无需密码即可登录。
    7、将Master与其他Salve之间操作同上1~5步。或者将各个节点上的id_pub导入到一个机器上authorized_keys中,然后复制到其他机器上。
    例如:
    切换到Salve2机器上ssh Salve2.Hadoop (需输入登录密码)
    然后scp ~/.ssh/authorized_keys [email protected]:~/
    再切换回Salve1,将从Salve2中获取的authorized_keys(或id_rsa.pub)导入到Salve1中的authorized_keys。。。以此类推
    操作完成以后,其他机器都可以无密登陆Salve1,将Salve1中的authorized_keys替代其他机器中的authorized_keys。

安装jdk

  1. 切换至root用户
  2. 上传jdk文件
    将jdk文件上传到虚拟机上自定义的文件夹中,这里放到/home/hortonworks下,安装在/usr/java中;
  3. 将文件copy到其他机器上
    在各个节点上创建文件 mkdir /usr/java
    并将jdk文件传输到Slave上,以Salve1为例
    scp /home/hortonworks/jdk-7u67-linux-x64.tar.gz [email protected]:/usr/java
    注意:采用root用户需输入密码,传输可用hadoop用户,已实现无密传输
  4. 解压文件
    解压至文件夹 /usr/java中,进入到文件路径下
    cd /usr/java
    tar -zxvf /usr/java/jdk-7u67-linux-x64.tar.gz
  5. 删除导入的jdk文件
    rm /usr/java/jdk-7u67-linux-x64.tar.gz
  6. 配置环境变量
    vim /etc/profile
    在文件底部加入JAVA_HOME、ClASS_PATH、PATH
    这里写图片描述
    使配置生效
    source /etc/profile
  7. 验证 java是否安装成功
    java -version
    ok验证成功
  8. 赋予hadoop用户操作权限
    用root用户,进入/usr文件夹,将java文件夹操作权限赋予hadoop用户
    chown -R hadoop:hadoop ./usr/java

安装hadoop集群

  1. 设置安装路径
    各个节点上创建hadoop文件夹 mkdir /usr/hadoop
  2. 将Master主机上的hadoop文件上传到其他节点上
    例如:
    scp /home/hortonworks/jdk-7u67-linux-x64.tar.gz [email protected]:/usr/hadoop
  3. 解压文件
    进入/usr/hadoop路径,执行如下
    Master上:
    tar -zxvf /home/hortonworks/hadoop-2.6.5.tar.gz
    Salve上:tar -zxvf /usr/hadoop/hadoop-2.6.5.tar.gz
  4. 将hadoop文件夹赋予hadoop用户读权限
    chown –R hadoop:hadoop hadoop
  5. 删除安装包
    rm /usr/hadoop/hadoop-2.6.5.tar.gz
  6. 添加tmp文件夹
    因为HDFS把namenode的格式化信息存在了系统的tmp目录下,该目录每次开机会被清空,因此每次重新启动机器,都需要重新格式化HDFS。解决方案是配置一个新的tmp目录给hadoop,这样无需每次重新格式化hdfs。
    mkdir /usr/hadoop/hadoop-2.6.5/tmp
  7. hadoop环境配置
    vim /etc/profile
    在底部加入
    这里写图片描述
    export HADOOP_HOME=/usr/hadoop/hadoop-2.6.5
    export PATH= HADOOPHOME/sbin: HADOOP_HOME/bin:$PATH
  8. hadoop配置
    core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件
    1、配置hadoop-env.sh
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/hadoop-env.sh
    配置java环境,在文件最底部添加:
    export JAVA_HOME=/usr/java/jdk1.7.0_67
    2、配置core-site.xml
    核心配置文件,设置临时目录及配置的是HDFS的地址和端口号,注:须将截图中的value中ip修改为192.168.193.130
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/core-site.xml
    节点configuration中添加内容如下:
    hadoop2.6.5集群安装及mapreduce测试运行_第1张图片
    3、配置hdfs-site.xml
    修改Hadoop中HDFS的配置,配置的备份方式默认为3,Salve少于3则会报错
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/hdfs-site.xml
    hadoop2.6.5集群安装及mapreduce测试运行_第2张图片
    4、配置mapred-site.xml
    cp /usr/hadoop/hadoop-2.6.5/etc/hadoop/mapred-site.xml.template /usr/hadoop/hadoop-2.6.5/etc/hadoop/ mapred-site.xml
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/ mapred-site.xml
    添加如下内容:
    hadoop2.6.5集群安装及mapreduce测试运行_第3张图片
    5、配置Master文件
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/ masters
    添加master主机ip
    这里填入192.168.193.130
    6、配置Salves文件
    Master主机特有
    vim /usr/hadoop/hadoop-2.6.5/etc/hadoop/slaves
    添加:
    192.168.193.131
    192.168.193.132
    192.168.193.133
    9、配置Salve的hadoop,可以单机采用上述1-5;也可直接将master节点上的hadoop文件夹复制过去,salve机器上的slaves文件是无需配置的,但无所谓。
    9.1、scp -r /usr/hadoop [email protected]:/usr/
    9.2、切换至salve机器的root用户, 例如ssh :Salve1.Hadoop。
    9.3、配置hadoop环境
    vim /etc/profile
    在底部加入
    这里写图片描述
    9.4、usr下,将hadoop文件夹赋予hadoop用户读权限
    chown -R hadoop:hadoop hadoop

启动和验证

  1. 关闭iptables服务
    查看iptables状态:service iptables status
    关闭iptables服务:chkconfig iptables off(重启后生效)
    临时关闭ptables服务:service iptables stop
  2. 启动hadoop
    2.1格式化namenode
    hadoop namenode -format
    2.2启动:start-all.sh
    发现存在警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable;
    解决方案:网上查找资料说是由于hadoop是32bit编译的,而系统为64位的所导致的;
    下载文件:
    http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar
    下载完以后,解压到hadoop的native目录下,覆盖原有文件即可。重新启动,就没有警告了。
  3. 验证是否启动成功
    jps查看启动项
    master显示:
    这里写图片描述
    slave显示:
    这里写图片描述
    也可运行命令查看个节点信息:
    hadoop dfsadmin -report
    网页版检测:
    http:192.168.193.130:50070
  4. 其他:
    若修改了ip,解决修改密码之后,无法上网的问题
    1、切换root用户运行:
    system-config-network
    会弹出对话框
    选择Device configuration,回车
    选择eth0,回车
    只保留name,device,use dhcp在中括号中添加*,其他均修改为空
    保存设置;
    重启网络服务:service network restart
    ok,可以上网了,缺点:修改的ip失效,回复原始ip,所以就返回修改,使用原本的ip,如果最初使用原始的ip也就无需这步了.

应用mapreduce

  1. 启动hadoop集群
    start-all.sh
  2. 在hadoop文件系统中增加文件
    hadoop fs 查看hdfs操作系统命令集合
  3. 创建hdfs目录
    hadoop fs -mkdir /input
  4. 上传文件
    hadoop fs -put /usr/hadoop/hadoop-2.6.5/README.txt /input/
  5. 修改文件名称
    hadoop fs -mv /input/README.txt /input/readme.txt
  6. 查看文件
    hadoop fs -ls /input
    输出文件夹为output,无需新建,若已存在需删除
  7. 运行hadoop自带例子
    hadoop jar /usr/hadoop/hadoop-2.6.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input /output
  8. 查看文件输出结果
    hadoop fs -ls /output
  9. 查看词频统计结果
    hadoop fs cat /output/part-r-00000
  10. 将hdfs上文件导出到本地
    hadoop fs -get /output/part-r-00000 /home/hadoop/data/pacc

实例学习

安装完成了,终于可以好好学习一些实例了。

参考blogurl

你可能感兴趣的:(hadoop)