美文网首页
Hadoop伪分布模式搭建

Hadoop伪分布模式搭建

作者: 胖子先生 | 来源:发表于2019-04-06 18:05 被阅读0次

0x01简介

众所周知,Hadoop有三种运行模式:单机模式、伪分布模式以及完全分布模式。在个人学习过程中,由于单机模式无法体现Hadoop分布式存储、计算的特点,同时受限于硬件条件(也是懒得去搭建多个虚拟机),伪分布模式是十分适合在学习阶段使用的Hadoop运行模式。

0x02 安装Java和Hadoop

a) 安装Java

由于常见的yum源中,Java的版本一般不是1.8.0,因此这里选择手动安装。
另外,笔者的操作系统在安装前没有安装任何版本的Java,如果操作系统中已经安装过其他版本的Java,可以选择略过安装Java部分,或者先卸载原来的版本,然后按照如下的步骤安装新版本Java

首先查看自己系统的版本,去官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择自己系统对应的版本(笔者选择的是jdk-8u201-linux-x64.tar.gz这个包):

uname -a
Linux VM_16_11_centos 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

下载好之后:

tar -xvf jdk-8u201-linux-x64.tar.gz  #解压缩
mv jdk1.8.0_201 /usr/local  #将文件mv到/usr/local文件夹中

b) 配置Java环境变量

cd ~/.bashrc

打开用户的shell配置文件,输入如下的几行:

JAVA_HOME=/usr/local/jdk1.8.0_201
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

保存后退出,输入source ~/.bashrc使修改生效。
配置完成后,键入

java -version

如果有如下的输出:

java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

然后键入javac,能够正常运行有人如下的输出,表名截止到目前的操作都是正确的。

Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -parameters                Generate metadata for reflection on method parameters
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -h <directory>             Specify where to place generated native header files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -profile <profile>         Check that API used is available in the specified profile
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system
  -Werror                    Terminate compilation if warnings occur
  @<filename>                Read options and filenames from file

c) 安装Hadoop

首先去官网找到一个合适的镜像源,下载一个合适的版本,笔者选择的是hadoop 2.7.6版本。

wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz

然后,接下来解压缩到任意文件夹,并将其mv到/usr/local文件夹下:

tar -xvf hadoop-2.7.6.tar.gz
mv hadoop-2.7.6 /usr/local/

d) 配置hadoop环境变量

cd ~/.bashrc

打开用户的shell配置文件,输入如下的几行:

HADOOP_HOME=/usr/local/hadoop
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME PATH

保存后退出,输入source ~/.bashrc使修改生效。
需要注意的是$HADOOP_HOME/bin中是一些可执行文件,比如hadoop客户端,而$HADOOP_HOME/sbin中是一些调度Hadoop服务的脚本。

e) 测试hadoop

安装好Hadoop之后,测试hadoop是否可以正常工作,这里用Word Count程序进行测试。
收件建立输入文件的路径,并将需要统计的文件放入该路径

mkdir -p /data/hadoop/input
cp /usr/local/hadoop/README.txt /data/hadoop/input/

该程序通常在Hadoop的安装包中都自带,用于测试功能,直接运行如下的命令:

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.6-sources.jar org.apache.hadoop.examples.WordCount /data/hadoop/input /data/hadoop/output

用如下的命令可以看到处理结果:

cat /data/hadoop/output/part-r-00000

0x03 伪分布模式搭建

a)配置ssh免密登录

首先,如果~目录下已经有.ssh文件夹的话,先删掉:

rm -r ~/.ssh

生成新的ssh-key,一路回车即可:

ssh-keygen -t rsa

为本机进行公钥的注册写入 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在配置完成后可以测试一下是否奏效:

ssh root@localhost

不用输入密码,表名 配置已经奏效。

b) 配置配置文件

接下来要配置的文件都位于$HADOOP_HOME/etc/hadoop文件夹中。

1.hadoop-evn.sh

首先配置hadoop-evn.sh文件,这是 hadoop运行的各种环境变量:

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

为避免Hadoop无法正确识别JAVA_HOME,需要手动设置一下。找到配置JAVA_HOME的一行,将其修改为:

export JAVA_HOME=/usr/local/jdk1.8.0_201

这个路径可根据实际情况自行调整。

2.core-site.xml

这个hadoop运行时的核心配置。
首先要建立一个hadoop的临时文件夹,是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配 置namenode和datanode的存放位置,默认就放在这个路径中。默认这个默认文件夹是/tmp,被会系统清理,因此需要单独创建一个临时文件夹。

mkdir -p /data/hadoop/tmp

打开core-site.xml输入如下的内容:

<configuration>
   <property>
      <name>hadoop.tmp.dir</name>
      <value>/data/hadoop/tmp</value>
   </property>
   <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
   </property>
</configuration>

3.hdfs-site.xml

这是hadoop分布式存储的配置文件
首先分别建立namenode和datanode的文件夹:

mkdir -p /data/hadoop/dfs/name
mkdir -p /data/hadoop/dfs/data

打开hdfs-site.xml文件,输入如下的内容:

<configuration>
   <property>
    <name>dfs.replication</name>
    <value>1</value>
   </property>
   <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/hadoop/dfs/name</value>
   </property>
   <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://data/hadoop/dfs/data</value>
   </property>
   <property>
    <name>dfs.permissions</name>
    <value>false</value>
   </property>
</configuration>

4.yarn-site.xml

这是yarn用到的配置文件。
打开yarn-site.xml文件,输入如下的内容:

<configuration>
   <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>localhost: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.resource-tracker.address</name>
    <value>localhost:8025</value>
   </property>
   <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>localhost:8030</value>
   </property>
   <property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost:8050</value>
   </property>
   <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>localhost:8030</value>
   </property>
   <property>
     <name>yarn.resourcemanager.webapp.address</name>
     <value>localhost:8088</value>
   </property>
   <property>
    <name>yarn.resourcemanager.webapp.https.address</name>
    <value>localhost:8090</value>
   </property>
</configuration>

c) 格式化数据目录

分别进入namenode和datanode的路径/data/hadoop/dfs/name(data),运行如下的命令,格式化目录:

hdfs namenode -format

d) 运行hadoop

start-all.sh

截止到目前,一切顺利的话,执行如上的命令,即可以伪分布模式运行hadoop。
执行jps命令,可以看到相关的进程信息:

2850 Jps
20997 ResourceManager
20842 SecondaryNameNode
21100 NodeManager
20655 DataNode

执行netstat -nptl,可以查看相关的端口信息:

tcp        0      0 127.0.0.1:8030          0.0.0.0:*               LISTEN      20997/java          
tcp        0      0 127.0.0.1:45151         0.0.0.0:*               LISTEN      20655/java          
tcp        0      0 127.0.0.1:8033          0.0.0.0:*               LISTEN      20997/java          
tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      20655/java          
tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      21100/java          
tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      21100/java          
tcp        0      0 0.0.0.0:50090           0.0.0.0:*               LISTEN      20842/java          
tcp        0      0 127.0.0.1:8050          0.0.0.0:*               LISTEN      20997/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1090/sshd           
tcp        0      0 127.0.0.1:8088          0.0.0.0:*               LISTEN      20997/java          
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      16161/python        
tcp        0      0 127.0.0.1:8025          0.0.0.0:*               LISTEN      20997/java          
tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN      21100/java          
tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      20655/java          
tcp        0      0 0.0.0.0:40411           0.0.0.0:*               LISTEN      21100/java          
tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      20655/java

在你的window浏览器中输入http://${你的机器IP}:50070/,就可以查看hadoop的一些信息了

相关文章

网友评论

      本文标题:Hadoop伪分布模式搭建

      本文链接:https://www.haomeiwen.com/subject/voqliqtx.html