前提:熟悉Linux系统操作,掌握基本的Linux命令
注意:安装路径中不能有任何中文字符和空格!
我安装的是ubuntu14,用户名是ubuntu,机器名是ubuntu,hadoop的版本是hadoop-2.7.1.tar.gz
1、 将hadoop用户添加到系统用户
ubuntu@ubuntu:~$ sudo addgroup hadoop
ubuntu@ubuntu:~$ sudo adduser --ingroup hadoop hadoop
2、 现在只是添加了一个用户hadoop,它并不具备管理员权限,我们给hadoop用户添加权限,打开/etc/sudoers文件
ubuntu@ubuntu:~$ sudo vim /etc/sudoers
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
1、 将jdk-7u80-linux-x64.tar.gz解压到相应路径(可以用命令也可以直接选中右键解压),我这里是解压到/home/ubuntu/software/java,解压后文件夹为jdk1.7.0_80(所在路径为/home/ubuntu/software/java/jdk1.7.0_80)
2、 解压完之后配置环境变量
ubuntu@ubuntu:$ sudo vim /etc/profile
在最后添加如下:
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export JRE_HOME=/home/ubuntu/software/java/jdk1.7.0_80/jre
exportCLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
运行java -version命令验证Java是否安装配置成功。
ubuntu@ubuntu:~$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
1、 先安装ssh。记住:从这里开始需要先从ubuntu用户切换到hadoop用户
ubuntu@ubuntu:~$ su - hadoop
Password:
hadoop@ubuntu:~$ sudo apt-get install openssh-server
2、 如果ssh安装完成之后,先启动服务
hadoop@ubuntu:~$ sudo /etc/init.d/ssh start
启动后通过命令查看是否正确启动
hadoop@ubuntu:~$ ps -e |grep ssh
3、 作为一个安全通信协议(ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式),使用时需要密码,因此我们要设置成免密码登录,生成私钥和公钥:
hadoop@ubuntu:~$ ssh-keygen -t rsa -P ""
(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的前者为私钥,后者为公钥)
进入~/.ssh/目录下,将公钥id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的(authorized_keys 用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容):
hadoop@ubuntu:~$ cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
执行ssh localhost命令进行登录:
hadoop@ubuntu:~$ ssh localhost
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-43-generic x86_64)
* Documentation: https://help.ubuntu.com/
18 packages can be updated.
18 updates are security updates.
Last login: Thu Jan 21 14:40:38 2016 from localhost
出现“Welcome to Ubuntu 14.04.3 LTS。。。”则表示登录成功。
( 注:当ssh远程登录到其它机器后,现在你控制的是远程的机器,需要执行退出命令才能重新控制本地主机。)
使用命令exit可以进行退出
hadoop@ubuntu:~$ exit
logout
Connection to localhost closed.
编辑/etc/hosts文件,将
127.0.0.1 localhost
127.0.1.1 ubuntu
改为
192.168.1.128 localhost
192.168.1.128 ubuntu
注:192.168.1.128为虚拟机机的ip地址(用命令ifconfig可以查看ip)
1、 将hadoop-2.7.gz解压到/usr/local下面
hadoop@ubuntu:~$ sudo tar –xzf hadoop-2.7.gz
重命名hadoop-2.7.1文件夹名为hadoop(为了敲命令方便)
hadoop@ubuntu:~$ sudo mv hadoop-2.7.1 hadoop
2、 要确保所有的操作都是在用户hadoop下完成的,所以将该hadoop文件夹的属主用户设为hadoop。
hadoop@ubuntu:/usr/local$sudo chown –R hadoop:hadoop hadoop
3、 配置hadoop-env.sh文件(hadoop-env.sh文件在hadoop/etc/hadoop路径下面)
hadoop@ubuntu:/usr/local$ sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
在hadoop-env.sh中export JAVA_HOME后面添加以下信息(JAVA_HOME路径改为实际路径):
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
保存之后运行下面命令使配置生效
hadoop@ubuntu:/usr/local/hadoop/etc/hadoop$source hadoop-env.sh
再到/etc/profile中添加HADOOP_INSTALL并修改PATH,结果为
export JAVA_HOME=/home/ubuntu/software/java/jdk1.7.0_80
export JRE_HOME=/home/ubuntu/software/java/jdk1.7.0_80/jre
export HADOOP_INSTALL=/usr/local/hadoop
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin
保存后重启虚拟机。
切换到hadoop用户,
运行命令
hadoop@ubuntu:/usr/local/hadoop$ hadoop version
如果看到如下hadoop版本信息则表示hadoop单机模式安装成功
hadoop@ubuntu:/usr/local/hadoop$ hadoop version
Hadoop 2.7.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This command was run using/usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.1.jar
现在运行一下hadoop自带的例子wordcount来感受以下MapReduce过程:
在hadoop目录下新建input文件夹
hadoop@ubuntu:/usr/local/hadoop$ sudo mkdir input
将etc中的所有文件拷贝到input文件夹中
hadoop@ubuntu:/usr/local/hadoop$ cp etc/*input
运行wordcount程序,并将结果保存到output中(注意input所在路径、jar所在路径)
hadoop@ubuntu:/usr/local/hadoop/share/hadoop/mapreduce$bin/hadoop jar hadoop-mapreduce-examples-2.7.1.jarwordcount /usr/local/hadoop/input/hadoop output
运行
hadoop@ubuntu:/usr/local/hadoop$ cat output/*
会看到conf所有文件的单词和频数都被统计出来。
core-site.xml
hadoop.tmp.dir
file:/usr/local/hadoop/tmp
Abase for other temporarydirectories.
fs.defaultFS
hdfs://192.168.154.128:9000
hdfs-site.xml
dfs.replication
1
dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data
mapred-site.xml(没有则复制一份mapred-site.xml.template并命名为mapred-site.xml)
mapreduce.framework.name
yarn
yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
下面进行HDFS文件系统进行格式化:
$bin/hdfs namenode -format
然后启用NameNode及DataNode进程:
hadoop@ubuntu:/usr/local/hadoop$ sbin/start-dfs.sh
hadoop@ubuntu:/usr/local/hadoop$ sbin/start-yarn.sh
启动进程之后用jps命令查看进程情况,出现6个进程名字说明启动成功
8431 JobTracker
8684 TaskTracker
7821 NameNode
7281 DataNode
8915 Jps
8341 SecondaryNameNode
至此,hadoop伪分布式安装成功。