(一)安装Java jdk
1.下载jdk并安装
从官网下载后找个,在usr/local/java文件夹下解压 ,用到的命令 为tar -zxvf xx -C 路径名
2.设置java环境变量
sudo gedit /etc/profile
/etc/profile 不管用什么身份登录等会起作用的环境变量,为了省事所以就配置这个,还有bash_profile
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
用文本编辑器打开/etc/profile
在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=JAVA_HOME/bin:PATH
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
注意
a. 要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录
b. linux下用冒号“:”来分隔路径
c.$ PATH / $CLASSPATH / $JAVA_HOME"
是用来引用原来的环境变量的值 ,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种 常见的错误。
d.CLASSPATH
中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
e. export
是把这三个变量导出为全局变量。
f. 大小写必须严格区分。
然后更新配置
source /etc/profile
通过java javac java -version,来检测是否安装好
(二)Hadoop有三种搭建模式,
- (单机模式)
- (伪分布式模式)
- (分布式模式)
common-step1:解压文件到/usr/local/hadoop文件夹下
tar -zxvf hadoop-2.7 -C /usr/local/hadoop
common-step2:配置环境变量(etc/profile)
# set hadoop path
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.3
这样配置的话,可以在hadoop的解压目录下通过bin/hadoop命令来运行hadoop指令
如果想要在任何目录下运行hadoop指令,再上述的基础上,加上下面的配置
export PATH=$HADOOP_HOME/bin:$PATH
在终端使用hadoop指令测试是否可以使用
1.搭建local模式(standalone模式)
上述操作已经搭建好了一个local模式的Hadoop,现在运行自带的wordcout程序:
在hadoop的解压目录下创建input和output两个文件夹,在input中放一个记录文件a.txt,使用命令
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount input/a.txt output/b.txt
localrun.png
2.搭建伪分布式Hadoop(使用yarn和不使用yarn配置不同)
伪分布式,即每个hadoop的守护进程(比如Master,slaver)都为一个Java进程,而不是运行在不同的物理机上
2.1不使用使用yarn管理资源
对两个文件进行配置 core-site.xml
, hdfs-site.xml
,
修改etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:///usr/hadoop/hadoop-2.6.0/tmp</value> (缓存文件)
</property>
</configuration>
修改 etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
检查能不能使用ssh无密码登录主机
ssh localhost
如果不能,则创建本机ssh免密登录
开始运行Hadoop,执行一下指令
-
格式化文件系统
$ bin/hdfs namenode -format
-
启动namenode和datanode守护进程
$ sbin/start-dfs.sh
如果遇到了什么幺蛾子,比如终端显示not permitted 货车no suchdirecory等信息,应该是权限不够,要么用 root用户登录后再执行,要么就修改hadoop文件的权限 sudo chmod -R 777 hadoop
- 打开浏览器,查看namenode界面
http://localhost:50070/
nmgui.png
-
创建HDFS文件目录来执行MapReduce作业
bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<username>
-
将文件上传到hdfs
bin/hdfs dfs -put etc/hadoop/*.xml input
-
运行自带程序wordcount
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcout input/*.xml output/a.txt(hdfs)(这两个都是hdfs的目录)
-
将hdfs文件复制到本地
bin/hdfs dfs -get output(hdfs) output(local)
-
关闭hdfs
sbin/stop-dfs.sh
2.2使用yarn作为资源管理器
-
配置
etc/hadoop/mapred-site.xml
:<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
配置
etc/hadoop/yarn-site.xml
:<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
-
启动yarn作为RM
sbin/start-yarn.sh
-
打开浏览器查看
http://localhost:8088/
-
在yarn上运行wordcount 跟上面的流程一样
-
关闭yarn
sbin/stop-yarn.sh
可能踩到的坑:
1.出现下面的情况说明在配置文件件中的编码有问题,尤其是在配置mapred-site.xml的时候,从模板复制过来的文件中前两行没有指定编码方式,打开其他文件,把前两行copy以下放进去就行了
1.png2.bin/hadoop命令无法使用
binhadoop.png这个命令必须在hadoop的安装目录下使用,而不是在任意目录下使用