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的一些信息了
网友评论