预备环境准备
- JAVA环境配置
建议使用JDK,最低使用Java 7,都2018了建议使用Java 8。官网下载最新版本JAVA,也可以源安装OpenJDK。/etc/profile添加环境变量如下:
JAVA_HOME=/home/xxx/jdk1.8.0_181
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
source /etc/profile更新最新配置
java -version测试
- SSH配置
伪分布式配置的意思就是,虽然程序都运行在本地,但是实际模拟的是整个分布式运行过程。因此需要配置远程登录到本机的SSH登录。
SSH配置过程A需要登录到B,则需要B向A授权,即把A的授权文件拷贝给B,即相当于A把自己钥匙给B了,如下整个过程:
- 首先在A生成密钥对
ssh-keygen -t rsa
紧接着一直回车 - 然后在A拷贝公钥到B,可执行命令
ssh-copy-id desthost
也可以拷贝A~/.ssh/rsa.pub内容到B 的authorizekeys
下载和安装
安装hadoop过程其实也是理解hadoop系统的过程,这里先从最简单的伪分布式安装开始。
可以直接从官网下载,现在生产环境用的最广泛的2.X版本,3.X版本相对来说改动没那么大,因此本教程使用hadoop版本为2.9.2
。
下载后解压Hadoop到指定目录
tar -zxvf xxx.tar.gz -C /home/wenzhou/app
/etc/profile添加环境变量如下:
export HADOOP_HOME=/home/wenzhou/app/hadoop-2.9.2
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin
source /etc/profile更新最新配置
查看解压目录如下
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share tmp
几个重要目录:
- bin 具体可执行文件
- sbin 环境启动脚本
- etc 配置文件
- logs 日志输出
配置核心
默认hadoop通过环境变量指定java环境,单通常这会失败,最简单方法是直接找到export JAVA_HOME={$JAVA_HOME}替换为具体位置
export JAVA_HOME=/usr/local/bin/jdk1.8.0_181
- core-site.xml
主要是指定NameNode位置和hadoop数据存储位置。这里wenzhou001是我本机配置的host,也可以直接配置ip地址,默认都指定9000端口。
<configuration>
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://wenzhou001:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/wenzhou/app/hadoop-2.9.2/tmp</value>
</property>
</configuration>
配置存储
- hdfs-site.xml
指定hdfs副本数,这里伪分布式直接配成1。
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置计算
- yarn-site.xml
和HDFS一样,需要指定计算的调度老大,然后是和yarn调度和查看相关的两个配置。
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 网页查看集群状态和任务进度等信息 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>
</configuration>
- mapred-site.xml
先mv mapred-site.xml.template mapred-site.xml,主要指定mr运行在yarn上,后面可以看到hadoop三大组件都是相互独立,mr可以运行在其他调度系统上。
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
启动和测试
- 格式化
至此,hadoop伪分布式配置完毕。
在正式测试之前,和安装单机操作系统一样,运行如下命令先格式化这个分布式系统。
hdfs namenode -format
- 启动HDFS
然后cd sbin中执行如下命令:
./start-dfs.sh
jps查看此时的java进程如下,可以看到此时HDFS的NameNode和DataNode进程都已经有了,至于SecondaryNameNode后续再讲。
3552 Jps
3234 DataNode
3127 NameNode
3407 SecondaryNameNode
可以看到HDFS其实和YARN是独立的,这时候HDFS系统已经完全启动了,实际上只要正确配置核心和存储即可完成HDFS启动。HDFS存储结构类似Linux目录结构,如下,使用hdfs shell命令,创建和上传文件:
hadoop fs -touchz test.txt
hadoop fs -mkdir testdir
hadoop fs -put local.log /testdir
如下查看当前文件:
hadoop fs -ls -R /
------------------输出------------------------
drwxr-xr-x - wenzhou supergroup 0 2018-12-22 19:55 /testdir
-rw-r--r-- 1 wenzhou supergroup 0 2018-12-22 19:55 /testdir/local.log
可以看到整个操作非常类似linux本地命令操作,可输入hadoop fs查看所有命令,对应完整hdfs shell使用可以查看文档。
另外,hadoop提供一个网页端访问HDFS的端口,默认是50070端口,比如我本机输入
http://192.168.139.140:50070/
如下,Overview
可以查看集群状态,Datanode
可以查看集群各个节点情况,Utilties
下可以选着查看和操作当前HDFS系统目录数据。
- 启动Yarn
然后cd sbin中执行如下命令:
./start-yarn.sh
jps查看此时的java进程如下,
3984 ResourceManager
3234 DataNode
4118 NodeManager
3127 NameNode
4397 Jps
3407 SecondaryNameNode
可以看到此时ResourceManager和NodeManager都已经启动。
在yarn-site.xml中我们配置了8088端口,通过此端口可以查看yarn集群状态,如下访问
http://192.168.139.140:8088/
可以看到WebUI中包含了各种Yarn集群相关信息,包括节点信息和任务运行状态信息。
关于Yarn的状态,下一节WordCount测试会有更多讲解。
原创,转载请注明来自