前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop安装教程_单机及伪分布式

Hadoop安装教程_单机及伪分布式

作者头像
用户1147754
发布2019-05-27 08:31:43
4630
发布2019-05-27 08:31:43
举报
文章被收录于专栏:YoungGyYoungGy

安装前的准备

准备的硬件与软件

  • 虚拟机软件:VirtualBox
  • centos7镜像:CentOS-7-x86_64-DVD-1503-01.iso
  • java的开发环境:jdk-8u51-linux-x64
  • hadoop安装包:hadoop-2.7.1.tar.gz
  • 软件ssh
  • 软件rsync
  • 软件httpd

安装概述

  1. 创建hadoop用户
  2. 配置网络
  3. 配置apache环境
  4. 配置java环境
  5. 配置ssh无密码登陆
  6. 安装hadoop

安装流程

hadoop安装前的设置

创建hadoop用户

代码语言:javascript
复制
$ useradd hadoop
$ passwd hadoop
$ cat /etc/passwd | grep bin/bash
$ adduser hadoop sudo
$ exit

配置新的hadoop用户 查看是否配置成功 为hadoop用户增加管理员权限 退出重新登陆

配置网络

虚拟机设置为桥接,有两种方法配置网络: 1. 进入GUI界面网络设置,打开有线连接 2. 进入网络配置文件目录,修改如下内容

代码语言:javascript
复制
$ cd  /etc/sysconfig/network-scripts/
$ vi  ifcfg-enp0s3

修改为

代码语言:javascript
复制
HWADDR=00:0C:29:8D:24:73
TYPE=Ethernet
BOOTPROTO=static  #启用静态IP地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=ae0965e7-22b9-45aa-8ec9-3f0a20a85d11
ONBOOT=yes  #开启自动启用网络连接
IPADDR0=192.168.21.128  #设置IP地址
PREFIXO0=24  #设置子网掩码
GATEWAY0=192.168.21.2  #设置网关
DNS1=8.8.8.8  #设置主DNS
DNS2=8.8.4.4  #设置备DNS

其中,ip地址(一般和路由在一个区段)、网关(一般是路由的地址)、DNS服务器的设置至关重要。 然后,

代码语言:javascript
复制
$ service network restart   #重启网络
$ ping www.baidu.com  #测试网络是否正常

配置apache环境

Centos7默认使用firewall作为防火墙,这里改为iptables防火墙。 这里配置apache环境的目的是可以在远端机器访问终端的Web界面。

  1. 关闭firewall $ systemctl stop firewalld.service #停止firewall $ systemctl disable firewalld.service #禁止firewall开机启动
  2. 安装iptables防火墙 $ yum install iptables-services #安装 $ vi /etc/sysconfig/iptables #编辑防火墙配置文件 # Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT :wq! #保存退出 $ systemctl restart iptables.service #最后重启防火墙使配置生效 $ systemctl enable iptables.service #设置防火墙开机启动
  3. 关闭selinux $ vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存退出 $ setenforce 0 #使配置立即生效
  4. 安装apache $ yum install httpd #根据提示,输入Y安装即可成功安装 $ systemctl start httpd.service #启动apache $ systemctl stop httpd.service #停止apache $ systemctl restart httpd.service #重启apache $ systemctl enable httpd.service #设置apache开机启动
  5. 测试apache 在客户端浏览器中打开服务器IP地址,会出现TEST123的页面,说明apache安装成功
  6. 注意事项 在后面的设置中,很多情况下会因为iptables防火墙的设置导致端口无法通讯,此处可以使用 $ service iptables status $ service iptables stop

配置java环境

hadoop的安装需要配置Java环境。 检验系统原版本

代码语言:javascript
复制
$ java -version

进一步查看JDK信息:

代码语言:javascript
复制
$ rpm -qa | grep java

卸载OpenJDK,执行以下操作:

代码语言:javascript
复制
$ rpm -e --nodeps tzdata-java-2014i-1.el7.noarch
$  rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1
$ rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86

安装JDK:

代码语言:javascript
复制
 rpm -ivh jdk-8u25-linux-x64.rpm

验证安装:

代码语言:javascript
复制
$ java
$ javac
$ java -version

最后,配置环境变量,以备不时之需:

代码语言:javascript
复制
$ vi + /etc/profile

JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

$ source /etc/profile
$ echo $PATH
$ echo $JAVA_HOME

配置ssh无密码登陆

首先,简单介绍下ssh的原理:

a要连接b,a先生成自己的公钥和私钥。然后把公钥派发给b。当a与b建立连接的时候,b会生成一个随机数并且用a的公钥对其进行加密返回a,然后a用私钥对其进行解密再返回b,如果和原来的随机数相等,则连接建立。

安装ssh,rsync

代码语言:javascript
复制
$ yum install openssh-server
$ yum install rsync
$ rpm -qa | grep ssh #验证安装成功
$ rpm -qa | grep rsync #验证安装成功

配置无密码登陆

代码语言:javascript
复制
$ cd ~/.ssh/   # 创建存放密匙的目录
$ ssh-keygen -t rsa     # 生成公匙
$ cat id_rsa.pub >> authorized_keys  # 加入授权
$ chmod 700 ~/.ssh # 设置相应权限,否则无法登陆
$ chmod 600 ~/.ssh/authorized_keys  
$ ssh localhost #验证

hadoop的安装

放置文件

通过WinScp程序,将下载好的hadoop文件放于/usr/local目录下,该目录一般用于存放用户的应用程序。 进入/usr/local目录。

解压缩

代码语言:javascript
复制
$ tar -zxf hadoop-2.7.1.tar.gz
$ mv ./hadoop-2.7.1/ ./hadoop
$ cd hadoop
$ ./bin/hadoop

目前,hadoop安装完成。

设置JAVA环境

代码语言:javascript
复制
$ vim etc/hadoop/hadoop-env.sh 

# set to the root of your Java installation
export JAVA_HOME=/usr/java/jdk1.8.0_51

单机及伪分布式配置

单机配置

单机模式,hadoop作为一个java进程,通常用于debug。

代码语言:javascript
复制
 $ mkdir input
 $ cp etc/hadoop/*.xml input
 $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
 $ cat output/*

 1       dfsadmin

伪分布式配置

配置文件

代码语言:javascript
复制
$ vim etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

$ vim etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

运行

  1. 格式化hdfs的文件系统 $ bin/hdfs namenode -format status 0表明格式化成功。
  2. 开启NameNode和DataNode的守护进程 $ sbin/start-dfs.sh $ jps #确认开启 20752 SecondaryNameNode 20497 DataNode 20344 NameNode 21432 Jps
  3. 浏览NameNode对应的网页 NameNode - http://localhost:50070/
  4. 使HDFS文件夹做好准备,需要先创建好用户目录 $ bin/hdfs dfs -mkdir -p /user/hadoop
  5. 将输入拷贝到HDFS文件系统 $ bin/hdfs dfs -mkdir input #在用户目录即hadoop目录下创建input文件夹,采用相对地址 $ bin/hdfs dfs -put etc/hadoop/*.xml input $ bin/hdfs dfs -ls input #查看hdfs下面的输入文件夹 $ bin/hdfs dfs -ls / #查看hdfs下面的根目录
  6. 运行一些实例 $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+' 伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(可以将单机步骤中创建的本地 input 文件夹删掉以及运行结果来验证这一点)。
  7. 查看结果 $ bin/hdfs dfs -get output output $ cat output/* #取回本地查看结果 $ rm -r ./output #运行时输出目录不能存在否则报错 $ bin/hdfs dfs -cat output/* #在hdfs上查看结果 $ bin/hdfs dfs -rm -r /user/hadoop/output #运行时输出目录不能存在否则报错
  8. 关闭NameNode和DataNode的守护进程 $ sbin/stop-dfs.sh $ jps #确认关闭

yarn的运行

配置文件

代码语言:javascript
复制
$ vim etc/hadoop/yarn-env.sh

# some Java parameters
export JAVA_HOME=/opt/jdk1.8.0_51

$ vim etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

$ vim etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

运行

首先,进行到伪分布配置,开启NameNode,DataNode,SeconaryNameNode

代码语言:javascript
复制
$ sbin/start-dfs.sh

接着,开启NodeManager,ResourceManager

代码语言:javascript
复制
$ sbin/start-yarn.sh
$ jps

22753 NameNode
22914 DataNode
24436 NodeManager
24312 ResourceManager
24600 Jps
23178 SecondaryNameNode

可以通过web浏览ResourceManager

代码语言:javascript
复制
ResourceManager - http://localhost:8088/

运行mapreduce的程序 结束yarn

代码语言:javascript
复制
$ sbin/stop-yarn.sh

PATH环境变量

在这里额外讲一下 PATH 这个环境变量(可执行 echo $PATH 查看,当中包含了多个目录)。例如我们在执行ls这个命令时,实际执行的是/bin/ls这个程序,而不是 ~/ls这个程序(假如存在)。系统是根据 PATH 这个环境变量中包含的目录位置,逐一进行查找,直至在这些目录位置下找到匹配的程序(若没有匹配的则提示该命令不存在)。 上面的教程中,我们都是先进入到 /usr/local/hadoop目录中,再执行 sbin/hadoop,实际上等同于运行 /usr/local/hadoop/sbin/hadoop。我们可以将 Hadoop 命令的相关目录加入到 PATH 环境变量中,这样就可以直接通过 start-dfs.sh开启 Hadoop,也可以直接通过 hdfs 访问 HDFS 的内容,方便平时的操作。 同样我们选择在’ ~/.bashrc ‘中进行设置(’vim ~/.bashrc’,与 JAVA_HOME 的设置相似),在文件最前面加入如下单独一行:

代码语言:javascript
复制
$ export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
$ source ~/.bashrc
$ hdfs dfs -ls input
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年08月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装前的准备
    • 准备的硬件与软件
      • 安装概述
      • 安装流程
        • hadoop安装前的设置
          • 创建hadoop用户
          • 配置网络
          • 配置apache环境
          • 配置java环境
          • 配置ssh无密码登陆
        • hadoop的安装
          • 放置文件
          • 解压缩
          • 设置JAVA环境
      • 单机及伪分布式配置
        • 单机配置
          • 伪分布式配置
            • 配置文件
            • 运行
          • yarn的运行
            • 配置文件
            • 运行
        • PATH环境变量
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档