Ubuntu 16.10 搭建 hadoop 2.7.3 完全集群

来源:互联网 发布:测试心理的软件 编辑:程序博客网 时间:2024/06/18 11:17

Ubuntu 16.10 搭建 hadoop 2.7.3 完全集群


最近在学习hadoop,在搭建完全分布式环境中的过程以及遇到的问题做一下记录。网上也有很多关于如何搭建hadoop的博客,不过大部分都是复制,粘贴。


  • 关于如何创建虚拟机,这里我不做介绍,网上有很多这方面的介绍。当然,如果你又条件,可以自己买服务器或者多台电脑玩。还有在安装之前要先安装jdk,以及设置jdk环境变量。

  • 创建hadoop用户组

groupadd hadoop
  • 添加hadoop用户
useradd -g hadoop -s /bin/bash -m hadoop备注:-g 属于刚刚创建的 hadoop 组     -s 是登录shell     -m 为hadoop在/home 下自动创建用户文件夹 hadoop
  • 安装shh
apt-get install sshapt-get install rsyncapt-get install openssh-server备注 : 对于ssh的详细安装,这里不做详解,请参看其他文章
  • 配置 主机(hadoop01) 节点可通过 SSH 无密码访问 从节点(hadoop02 , hadoop03)

    1. 生成私钥,公钥
ssh-keygen -t rsassh-keygen -t rsa -P '' //表示空密码cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //追加到authorized_keyschmod 600 authorized_keys //修改authorized_keys的权限,(这一步很重要不然的话,SSH时仍然需要密码)
  • 将生成的 authorized_keys 文件复制到 hadoop02 和 hadoop03 的 .ssh目录下
scp ~/.ssh/authorized_keys hadoop@hadoop02:~/.sshscp ~/.ssh/authorized_keys hadoop@hadoop02:~/.ssh
  • 安装hadoop
    1、 从hadoop下载对应的tar.gz文件进行安装,这里选择的是2.7.3
    2、 解压文件
tar -zxvf hadoop-2.7.3.tar.gz
  • 配置 hadoop 的环境变量
vim /etc/profile# set hadoop pathexport HADOOP_HOME=/usr/hadoop/hadoop-2.7.1export PATH=$PATH:$HADOOP_HOME/binsource /etc/profile
  • 配置hadoop-env.sh,yarn-env.sh(export JAVA_HOME=/usr/java/jdk1.8.0_131),看到hadoop 2.7.3 中 hadoop-env.sh,yarn-env.sh 中默认使用的是 $JAVA_HOME , 但此处必须配置,不然启动的时候namenode和datanode会报找不到java_home 的错误

  • core-site.xml

<configuration>        <property>                <name>hadoop.tmp.dir</name>                <value>/usr/local/hadoop/tmp</value>        </property>        <property>                <name>fs.defaultFS</name>                <value>hdfs://hadoop01:9000</value>        </property>        <property>         <name>io.file.buffer.size</name>         <value>131072</value>       </property></configuration>
  • hdfs-site.xml
<configuration>        <property>            <name>dfs.namenode.handler.count</name>            <value>100</value>        </property></configuration>看到其他文章有用到dfs.namenode.name.dir等配置,这里我没有配置,用hadoop默认的就好,默认位置:默认file://${hadoop.tmp.dir}/dfs/name
  • mapred-site.xml
<configuration>    <property>      <name>mapreduce.framework.name</name>      <value>yarn</value>    </property></configuration>看到其他文章有用到mapreduce.jobhistory.address等配置,这里我用默认的
  • yarn-site.xml
<configuration>    <property>      <name>yarn.nodemanager.aux-services</name>      <value>mapreduce_shuffle</value>    </property>    <property>         <name>yarn.resourcemanager.hostname</name>         <value>hadoop01</value>     </property></configuration>这里很多文章都是配置了一大串的 host:port,值需要配置 yarn.resourcemanager.hostname 就好,其他都会以这个作为host
  • 格式化节点 之前需要执行以下操作,不然执行wordcount程序会出现卡掉错误(以下ip是我局域网的ip,各自根据自己的ip进行修改)
 vi /etc/hosts192.168.234.128 hadoop01192.168.234.129 hadoop02192.168.234.130 hadoop03这里需要注意,去掉/etc/hosts 中127.0.0.1 等多余的配置
  • 修改hostname,各个机器上都需要修改,分别在各台机器上执行如下语句:
 hostname hadoop01 hostname hadoop02 hostname hadoop03
  • 好了,现在可以开始格式化节点了,在hadoop01上执行如下语句
bin/hdfs namenode -format

看到“successfully formatted”字样,表示,格式化成功。
format

  • 启动hadoop,在hadoop安装目录(比如我是/usr/local/hadoop),执行如下命令
sbin/start-all.sh 

在hadoop01,上用jps查看,namenode,ResourceManager是否启动

这里写图片描述

在hadoop02,03上用jps查看,datanode,NodeManager是否启动

这里写图片描述

  • 浏览器查看 HDFS:http://192.168.234.128:50070

    这里写图片描述

  • 浏览器查看 mapreduce:http://192.168.234.128:8088

这里写图片描述

  • 在hdfs的根目录下建立了一个test目录
hdfs dfs -mkdir /test
  • 创建一个words.txt 文件
vi words.txtHello AlfredHello WorldHello TomHello JackHello HadoopBye   hadoop
  • 将words.txt上传到hdfs的根目录
hadoop fs -put words.txt /
  • 运行一个WordCount程序
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /words.txt /test/out

这里写图片描述

  • 运行成功, 查看运行结果(一步步执行下面语句看是否有运行成功文件)
 hdfs dfs -ls / hdfs dfs -ls /test hdfs dfs -ls /test/out  hdfs dfs -cat /test/out/part-r-00000 //这里part-r-0000改为你自己的文件名

这里写图片描述

0 0