我的配置环境
- 我的是mac环境,centos/ubuntu等环境通用
- 安装首先需要安装jdk1.8、maven3.5.3、protoc(必须是2.5,下载地址:protoc2.5)。
- 这里的maven和protoc是为以后的重新编译Hadoop-src源码做准备,本文暂且使用不到
- 下载完成后,解压到本地目录
- vi ~/.bash_profile,忽略这里的HADOOP_HOME,下边才会配置这个
- source ~/.bash_profile,刷新配置,使其立即生效
安装Hadoop
- 下载hadoop.2.8.3
- 解压到自定义目录,如第一图所示
- vi ~/.bash_profile,如第二图所示
- source ~/.bash_profile,刷新配置,使其立即生效
修改配置项并启动
- 环境准备好之后,开始修改配置项。需要修改的配置文件都在$HADOOP_HOME/etc/hadoop目录下
- core-site.xml文件用于配置通用属性,hdfs-size.xml文件用于配置HDFS属性,mapred-site.xml文件用于配置MapReduce属性,yarn-site.xml文件用于配置YARN属性
- Hadoop有一下三种运行模式
- 独立(或本地)模式 无需运行任何守护进程,所有程序都在同一个JVM上执行
- 伪分布式模式 Hadoop守护进程运行在本地机器上,模拟一个小规模的集群
- 全分布式模式 Hadoop守护进程运行在一个集群上,此模式的设置请参考Hadoop权威指南第四版 第十章
修改配置文件,构建伪分布式集群,切换到$HADOOP_HOME /etc/hadoop目录下
- 在终端输入hostname,确定本机hostname是否为localhost,若不是,则以下所有localhost可替换为你的hostname
vi core-site.xml,在configuration标签下
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/Users/mright/apps/hadoop-2.8.3/tmp</value> </property>
vi hadoop-env.sh,修改JAVA_HOME,mac系统用这个路径,Linux系统用你自己配置的jdk根目录
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
vi hdfs-site.xml
<property> <name>dfs.replication</name> <value>1</value> </property>
vi mapred-site.xml,如果没有,则cp mapred-site.xml.template mapred-site.xml,再执行vi mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
vi yarn-site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
hdfs namenode -format
- start-dfs.sh
- start-yarn.sh
- jps (查看已启动进程, DataNode /NameNode /NodeManager/ ResourceManager /SecondartNameNode必须都已启动)
- 上述命令依次执行即可,我在启动namenode的时候确实遇到了小意外,namenod无法启动,经排查是hostname的问题,将localhost修改为我本机hostname即可
wordcount测试
在随便一个目录下,新建一个含有几个字符串的文件
- touch wd.txt
- vi wd.txt
- hello world nihao 陈独秀 嘎嘎 哈哈儿
- 将第三行的文本写入到wd.txt
- 在hdfs新建一个文件夹用于存放wd.txt
- hdfs dfs -mkdir /input
- 上传文件
- hdfs dfs -put wd.txt /input
执行测试
- hadoop jar /Users/mright/apps/hadoop2.8.3/share/hadoop/mapreduce/hadoop-mapreduce- examples-2.8.3.jar wordcount /input /output
- 这一行命令的含义是:调用hadoop-mapreduce- examples-2.8.3.jar的wordcount这个main函数,处理hdfs的/input目录下的所有文件,将结果输出到/out目录下,注意,这里的/out目录是不能预先创建的,如果存在,程序会出于数据安全、不能覆盖数据的角度出发而报错
这里可能会卡住很久不动,大概有五分钟左右,如果还是不动,你可以ctrl+c终止进程,修改一个配置,增加下内存。这种情况是有一定几率出现的,我的mac是有这个问题,但是公司的windows下centos7的虚拟机就没有出现,做完如下配置即可。
- vi yarn-site.xml,修改完毕后的
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>localhost</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>20480</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property> </configuration>
- 再次执行hadoop jar /Users/mright/apps/hadoop2.8.3/share/hadoop/mapreduce/hadoop-mapreduce- examples-2.8.3.jar wordcount /input /output,首先确保/outpt目录不存在哈
- 查看/output,hdfs dfs -ls /output
part-r-00000就是生成的数据文件,同样我们通过hdfs的命令行操作查看内容
- 到此为止,hadoop伪分布式基本已经完成,接下来的博客中,我会更新hdfs的相关内容、yarn的相关内容、hbase等等,让我们一起学习吧~