参考自:https://blog.csdn.net/hliq5399/article/details/78193113
原材料:
1.Ubuntu16.04操作系统成品(在vmware上安装成功)
2.jdk-7u67-linux-x64.tar.gzjdk-7u67-linux-x64.tar.gz 下载地址:http://download.oracle.com/otn/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz
3.hadoop-2.6.5.tar.gz 下载地址:https://www-eu.apache.org/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
其中下载jdk时可能需要登录,如果你嫌登录麻烦,也可以直接从我给的百度云链接下载:
链接:https://pan.baidu.com/s/1XtfhgZ8K3VRjyjwNBzYRoQ 提取码:gj10
步骤:
1.使用命令 sudo mkdir /opt/modules 创建modules目录用于存放与hadoop相关的文件,再使用命令sudo chown hadoop:hadoop -R /opt/modules 将/opt/modules目录及其子目录下所有文件和文件夹的UID和GID改为hadoop
2.将windows上下载的jdk与hadoop压缩文件复制到/opt/modules目录下,我用的是与windows共享目录的方法
3.使用linux的 tar -zxvf命令解压文件
4.删除压缩文件
5.将hadoop-2.6.5文件名改为hadoop,jdk1.7.0_67文件夹名改为jdk
6.配置java和hadoop环境变量。使用命令 sudo gedit /etc/profile 打开/etc/profile,在文件末尾写入
export JAVA_HOME=/opt/modules/jdk
export HADOOP_HOME=/opt/modules/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后保存退出,重启虚拟机
7.输入命令java -version以及hadoop version查看java环境变量以及hadoop环境变量是否配置正确。如果现实如下结果,则证明配置正确;否则应该再检查下自己哪里写错了
8.输入命令 cd $HADOOP_HOME/etc/hadoop/,进入hadoop配置文件所在的目录,使用命令 gedit hadoop-env.sh mapred-env.sh yarn-env.sh,在这三个文件末尾添加 export JAVA_HOME=/opt/modules/jdk
9.配置core-site.xml.使用命令 gedit core-site.xml,在<configuration></configuration>之间插入以下内容:
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
其中第一个property是配置默认文件系统所在的位置,我设置的是hadoop:8020(hadoop为我的主机名,8020为端口号)
第二个property是配置hadoop临时目录所在位置,我设置的是/opt/data/tmp,此时这个目录还不存在,稍后得通过命令创建该目录
10.通过命令 sudo mkdir -p /opt/data/tmp创建上一步指定的hadoop临时目录,并使用命令 chown hadoop:hadoop -R /opt/data 将/opt/data目录及其所有子目录的UID和GID都设置为hadoop
11.配置hdfs-site.xml.在<configuration></configuration>之间插入以下内容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
该property是配置分布式文件系统对于每个文件块的副本数量设置,默认为3,而在伪分布式环境下设置为1,因为只有一个节点
12.将mapred-site.xml.template复制一份为mapred-site.xml,再配置mapred-site.xml.在<configuration></configuration>之间插入以下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
该property是配置进行mapreduce计算任务的框架,设置为yarn
13.配置yarn-site.xml.在<configuration></configuration>之间插入以下内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
第一个property配置的是mapreduce使用混洗重组模式,第二个property指定了yarn框架中资源管理者的主机名,因为就一个节点,所以也设置为hadoop
14.配置本机ssh免密登录。这一步详情可以查看 https://blog.csdn.net/smart_ferry/article/details/84446479
15.使用命令 hdfs namenode -format 对namenode进行格式化。若格式化成功,则/opt/data/tmp(第9步创建的hdfs临时目录)目录下会生成一个新目录dfs;否则,即为失败,应往回检查是否哪里设置错误
16.使用命令 start-all.sh 开启所有节点(伪分布式只有本机一个节点)及节点所开启的所有服务,并使用jps查看该节点的对应服务是否开启成功。如果现实一下内容,则证明配置成功。
17.在/opt/data目录中新建一个文件input.txt,输入内容如下图所示
18.在hdfs文件系统中创建目录/test/input。命令:hdfs dfs -mkdir -p /test/input 并使用命令 hdfs dfs -ls / 查看目录是否创建成功
19.将17创建的input.txt上传至hdfs中的/test/input目录下。命令:hdfs dfs -put /opt/data/input.txt /test/input 使用命令 hdfs dfs -cat /test/input/input.txt 查看是否上传成功
20.使用hadoop自带的WordCount程序对input.txt文件进行单词计数。命令:
yarn jar /opt/modules/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /test/input /test/output
参数 wordcount 为该jar包的主类名 /test/input 为输入文件夹(是文件夹,不是文件!!!) /test/output 为输出文件夹(是文件夹,不是文件!!!并且,在执行此命令之前,hdfs中不能有/test/output目录!!!)
21.查看单词统计结果。命令:hdfs dfs -cat /test/output/part-r-00000
至此,伪分布式的hadoop环境已经安装并且测试成功...遨游吧,少年