【Hadoop系列】第二章:安装Hadoop(上)单机版Hadoop

来源:互联网 发布:英国海军实力知乎 编辑:程序博客网 时间:2024/05/22 03:42

Hadoop单机版安装过程


一、搭建环境


虚拟机:VMware WorkStation 9

操作系统:CentOS 6.6_64位

IP:192.168.140.130



二、搭建过程


1.创建新用户


我们不使用root用户来安装Hadoop,推荐新建一个用户。

[root@localhost ~]# useradd frank[root@localhost ~]# passwd frank


赋予frank用户sudo的权限,即可以临时使用超级权限,以便对文件进行必要的更改。

[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 x64145.19 MB  jdk-8u45-linux-x64.rpmrpm包安装可以检测一些依赖问题,个人推荐。如果要用源码编译,可以自己参考网上文章。

[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/总用量 443188drwxrwxr-x.  3 frank frank      4096 6月  15 20:51 dfsdrwxr-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 NameNode5036 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 DataNode5225 Jps4923 NameNode


(3).配置本地浏览器访问
可以看到两个都启动起来了。

这个时候进入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 /home15/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/frank15/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/frank15/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/jps6801 Jps5153 DataNode6325 ResourceManager6614 NodeManager4923 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告一段落。









0 0
原创粉丝点击