Hadoop单机版安装过程
一、搭建环境
虚拟机:VMware WorkStation 9
操作系统:CentOS 6.6_64位
IP:192.168.140.130
二、搭建过程
1.创建新用户
我们不使用root用户来安装Hadoop,推荐新建一个用户。
[root@localhost ~]# useradd frank
[root@localhost ~]# passwd frank
[root@localhost ~]# vim /etc/sudoers
sudoer文件是只读的,但是也可以在root权限下进行编辑。找到
root ALL=(ALL) ALL
这一行,在下边添加
frank ALL=(ALL) ALL
保存,保存时提示文件只读,需要加!强制保存。输入:x!或者:wq!即可.
新安装的虚拟机没有vim(推荐vim,比vi好用很多),可以使用yum install vim即可安装。有的系统可能安装失败,那是因为vi的版本太老了,先yum update vi,即可安装vim。
前面的步骤赋予了frank临时超级权限,以后的步骤都在frank用户中进行。
[root@localhost ~]# su frank
[frank@localhost root]$
部分系统或者操作会出现新建的用户的终端是类似于[-bash-3.2$ :],不会出现[frank@localhost root]$
如果遇到这种问题,可以把root根目录下(cd ~)的.bash_profile和.bashrc文件赋值到frank的根目录下/home/frank/即可
2.安装jdk
进入官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 中选择自己对应的版本,这里我选择
Linux x64 | 145.19 MB | jdk-8u45-linux-x64.rpm |
[frank@localhost ~]$ cd ~
[frank@localhost ~]$ mkdir hadoop
我们使用secureFX将安装包传入/home/frank/hadoop下
[frank@localhost hadoop]$ sudo rpm -ivh jdk-8u45-linux-x64.rpm
安装好之后默认路径在/usr/java/jdk1.8.0_45/
也可以在安装的命令里配置安装路径,这里不赘述。
3.安装hadoop
我们使用CDH-5 企业发行版,下载地址
http://archive.cloudera.com/cdh5/cdh/5/
我们下载目前最新的版本hadoop-2.6.0-cdh5.4.4.tar.gz(根据自己需要下载,推荐最新版)
下载好后传至/home/frank/hadoop
解压
[frank@localhost hadoop]$ tar -vxf hadoop-2.6.0-cdh5.4.4.tar.gz
解压好后可以进入文件夹
[frank@localhost hadoop]$ cd hadoop-2.6.0-cdh5.4.4
4.Hadoop的配置
有部分文件需要配置
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ cd etc/hadoop/
(1).可以在/etc/hosts中新增
[frank@localhost hadoop]$ sudo vim /etc/hosts
127.0.1.1 YARN001
相当于给主机增加一个别名,方便进行管理。
(2).修改core-site.xml文件
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://YARN001:8020</value>
</property>
</configuration>
其中YARN001也可以使用localhost,端口号使用可用的端口号即可。
(3).编辑hadoop-env.sh
找到export JSVC_HOME=${JSVC_HOME}将其注释掉(前面加#)
新增export JAVA_HOME=/usr/java/jdk1.8.0_45/
这里直接将环境变量写好,就省去了给JDK配环境变量的过程了。
(4).编辑hdfs-site.xml
<pre name="code" class="html"><configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/frank/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/frank/hadoop/dfs/data</value>
</property>
</configuration>
这里配置的/home/frank/hadoop/dfs/name和/home/frank/hadoop/dfs/data,并不需要存在,在namenode和datanode启动后会自己创建。也可以不配置这两项,但是Hadoop会默认把路径放在tmp中,容易丢失。
(5).编辑mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(6).编辑yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(7).其他
安全起见,可以把凡是后面为env.sh的文件里面有JAVA_HOME的都配置成固定路径
这里主要有yarn-env.sh,可以在其中添加 export JAVA_HOME=/usr/java/jdk1.8.0_45/
建议修改好之后,做个备份,以后直接简单的修改后使用。
5.免ssh登录,非必要
参考 http://www.cnblogs.com/dplearning/p/4140352.html
1、输入ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
其中''里的是登陆的密码,因为要设置免密码,所以''里是什么都没有的,空格也不行
2、输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
3、输入 ssh -version 如果不需要密码则成功了
6.Java环境变量设置及设为默认版本,非必要
参考 http://www.cnblogs.com/dplearning/p/4140334.html
如果嫌麻烦,可以这样设置
[frank@localhost ~]$ vim ~/.bash_profile
在export PATH前面增加
PATH=$PATH:/usr/java/jdk1.8.0_45/bin/jps
执行命令source /etc/profile来生效,以后可以直接使用jps命令
7.下面开始启动Hadoop
第一次启动集群时,需要格式化,会清空所有文件
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ bin/hdfs namenode -format
我们查看文件夹
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ ll /home/frank/hadoop/
总用量 443188
drwxrwxr-x. 3 frank frank 4096 6月 15 20:51 dfs
drwxr-xr-x. 14 frank frank 4096 7月 7 2015 hadoop-2.6.0-cdh5.4.4
-rw-r--r--. 1 root root 301571071 7月 11 2015 hadoop-2.6.0-cdh5.4.4.tar.gz
-rw-r--r--. 1 root root 152239254 4月 17 21:50 jdk-8u45-linux-x64.rpm
发现在/home/frank/hadoop/中已经自己生成了我们在配置文件hdfs-site.xml中写的文件夹dfs
可以使用sbin/start-all.sh这种方式全部启动,但是不利于排查错误,我们一步一步启动
(1).启动namenode
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/hadoop-daemon.sh start namenode
调用jdk中的jps命令可以查看是否存在这个进程,从而判断是否启动成功
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ /usr/java/jdk1.8.0_45/bin/jps
4923 NameNode
5036 Jps
如果配置好环境变量,此处可以不用写绝对路径,直接jps就行。
如果没有namenode,可以查看日志文件 ,在logs内,查看log文件即可,去搜索解决方法。
(2).同样的方法启动datanode
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /home/frank/hadoop/hadoop-2.6.0-cdh5.4.4/logs/hadoop-frank-datanode-localhost.localdomain.out
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ /usr/java/jdk1.8.0_45/bin/jps
5153 DataNode
5225 Jps
4923 NameNode
可以看到两个都启动起来了。
这个时候进入Linux中的浏览器http://YARN001:50070/可以看到相应的运行情况
不过每次都跑到虚拟机里面去浏览网页太麻烦,最好是在本地的浏览器用虚拟机的ip来访问
我们在本地浏览器中输入网址http://192.168.140.130:50070/,会发现无法访问
这里要进行配置。
首先,对其他电脑开放80(浏览网页使用)和50070端口
为了方便,我这里转为root用户来操作
[root@localhost hadoop-2.6.0-cdh5.4.4]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost hadoop-2.6.0-cdh5.4.4]# /sbin/iptables -I INPUT -p tcp --dport 50070 -j ACCEPT
[root@localhost hadoop-2.6.0-cdh5.4.4]# /etc/rc.d/init.d/iptables save
[root@localhost hadoop-2.6.0-cdh5.4.4]# /etc/init.d/iptables restart
防火墙规则已经修改,接下来禁用selinux
[root@localhost hadoop-2.6.0-cdh5.4.4]# vim /etc/selinux/config
将其中 SELINUX=disabled 即可重启一下http服务
[root@localhost hadoop-2.6.0-cdh5.4.4]# service httpd restart
访问http://192.168.140.130:50070/试试看,如果不成功,则访问http://192.168.140.130,如果成功,说明80端口可以访问,是50070端口没有成功访问。如果连这个网页也不能访问,则先看ip能不能互相ping通,看看是不是把Windows的IP放入了黑名单,可以在/etc/hosts.allow中添加ip
建议火狐浏览器观看,效果比较好.
(4).创建文件夹和上传文件
[root@localhost hadoop-2.6.0-cdh5.4.4]# su frank
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ bin/hadoop fs -mkdir /home
15/06/15 21:39:05 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ bin/hadoop fs -mkdir /home/frank
15/06/15 21:39:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ bin/hadoop fs -put README.txt /home/frank
15/06/15 21:39:38 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
出现的提示可以忽略。
确实生成了。
(5).启动yarn
直接
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/start-yarn.sh
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ /usr/java/jdk1.8.0_45/bin/jps
6801 Jps
5153 DataNode
6325 ResourceManager
6614 NodeManager
4923 NameNode
启动成功
<span style="color: rgb(75, 75, 75); line-height: 18.5714302062988px; background-color: rgb(255, 255, 255);"><span style="font-family:KaiTi_GB2312;font-size:18px;">通过访问http://YARN001:8088/可以用网页进行查看和管理,同样的,要想用本地的浏览器观看,需要开放8088端口。步骤同上,嫌麻烦的可以直接关掉防火墙,虚拟机中仅学习使用还是无所谓的。</span></span>
(6).关闭防火墙
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
(7)另一种方法添加端口
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sudo vim /etc/sysconfig/iptables
可以看到其中有我们之前添加的端口80和50070,将8088端口以一样的格式添加进去即可
重启防火墙
[root@localhost hadoop-2.6.0-cdh5.4.4]# sudo /etc/init.d/iptables restart
访问http://192.168.140.130:8088可以看到如下页面
可以运行实例,是用了估算圆周率pi的值(电脑不好的机器还是不要随便尝试了。。。)
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.4.4.jar pi 2 100
pi是参数,2是task个数,100是次数
可以看到实例的信息,包括进度条。
8.关闭Hadoop
关闭则使用
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/stop-yarn.sh
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/stop-dfs.sh
或者直接
[frank@localhost hadoop-2.6.0-cdh5.4.4]$ sbin/stop-all.sh
至此,单机版的Hadoop告一段落。