您的位置:首页 > 运维架构

Hadoop(一)--安装、配置与简单测试

2016-10-19 18:54 369 查看
  刚刚开始接触Hadoop,发现网上好多安装教程都是适用1.x版本的,但现在都hadoop版本都已经到3.0了,不太适用于一个初学者,查了些资料,看了一些相关视频,才对Hadoop有一个初步了解,简单的配置了Hadoop,我使用的是Hadoop2.7.3,现在将Hadoop的安装配置总结如下:

  Hadoop的安装配置(伪分布模式)总共分为三个步骤:

  1. 安装Linux(使用CentOS 6.5 64位)

  2. 安装JDK(使用jdk-8u101-linux-x64.tar.gz)

  3. 安装Hadoop并配置文件(hadoop-2.7.3.tar.gz)

  开始之前,还可以使用一些软件,为了便于传输文件:

  1. winSCP:用于从windows向linux中传输文件

  2. Xshell

  使用winSCP将hadoop-2.7.3.tar.gz和jdk-8u101-linux-x64.tar.gz到CentOS中/opt(目录随意)

安装Linux并配置相关项

安装虚拟机和CentOS就不再赘述,为了简单网络连接使用的桥接

修改主机名(为了便于区分和之后配置文件)

# vim /etc/sysconfig/network

NETWORKING=yes

修改IP地址,两种方式:

第一种:

# setup(CentOS独有的)

 Network configuration –> Device configuration —>选择网卡,设置IP地址,网关等

#ifconfig eth0 up(启动eth0网卡)

 但是这样,重启后eth0不会自动启动,需要修改配置文件

第二种:

#vim /etc/sysconfig/network-scripts/ifcfg-eth0

  DEVICE=eth0

  HWADDR=00:0c:29:6e:fa:2d

  TYPE=Ethernet

  UUID=145ec129-2505-4e64-b97b-24a9bae43fec

  ONBOOT=yes #默认自动启动

  NM_CONTROLLED=yes

  BOOTPROTO=none

  IPADDR=192.168.1.100 #IP地址

  NETMASK=255.255.255.0 #掩码

  GATEWAY=192.168.1.1 #网关

  DNS1=202.106.0.20

  IPV6INIT=no

  USERCTL=no

退出后更新配置:#source /etc/sysconfig/network-scripts/ifcfg-eth0

修改主机名和IP的映射关系

# vim /etc/hosts

  192.168.1.100 master

关闭防火墙

  查看防火墙状态

# service iptables status

  关闭防火墙

# service iptables stop

  查看防火墙开机启动状态

# chkconfig iptables –list

  关闭防火墙开机启动

# chkconfig iptables off

安装JDK

首先卸载自带的JDK(好像不卸载也没有问题)

#rpm -qa | grep java查看jdk版本

显示如下信息:

   jtzdata-java-2013g-1.el6.noarch

  java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

  java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

卸载JDK:

# rpm -e –nodeps tzdata-java-2013g-1.el6.noarch

# rpm -e –nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

# rpm -e –nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

解压JDK

# tar -zxvf /opt/jdk-8u101-linux-x64.tar.gz

  为了方便,重命名为jdk

# mv jdk-8u101-linux-x64.tar.gz jdk

将java添加到环境变量

# vim /etc/profile

在文件最后添加:

  export JAVA_HOME=/opt/jdk

  export PATH=$PATH:$JAVA_HOME/bin

更新配置

#source /etc/profile

安装配置Hadoop

解压hadoop-2.7.3.tar.gz

# tar -zxvf hadoop-2.7.3.tar.gz

重命名

#mv hadoop-2.7.3.tar.gz hadoop

配置环境

# vim /etc/proflie

  export JAVA_HOME=/opt/jdk

  export HADOOP_HOME=/ipt/hadoop

  export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

更新配置

#source /etc/profile

这样,Hadoop的独立模式就配置完成了。

伪分布模式需要配置5个文件,都在HADOOP_HOME/etc/profile中

xml文件配置的内容都在中添加

xml文件的格式:

<configuration>
<property>
<name></name>
<value></value>
</property>
……
<property>
<name></name>
<value></value>
</property>
</configuration>


(1)hadoop-env.sh,hadoop环境文件,这里需要配置Java环境:

# vim hadoop-env.sh

  # The java implementation to use.

  export JAVA_HOME=/opt/jdk

(2)core-site.xml,核心配置文件:

<property>
<!--fs:文件系统,defaultFS:默认的文件系统 ==> hadoop默认采用那种文件系统-->
<name>fs.defaultFS</name>
<!--采用hdfs,协议://主节点名:端口号(默认9000)-->
<value>hdfs://master:9000/</value>
</property>
<property>
<!--配置hadoop的工作目录,本地。存储hadoop在运行期间产生的数据
比如,将文件放入hdfs系统后,对文件进行切块,放在某些datanode中,datanode将切块管理起来,存放在本地主机中,这里就指定了存放的工作目录
这里笼统指定,让系统自己指定子目录,但在实际中应给namenode和datanode单独指定目录,而且要是单独的挂载点,便于管理-->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data/</value>
</property>


(3) hdfs-site.xml

<property>
<!--hdfs中副本的数量,必须放在不同电脑上-->
<name>dfs.replication</name>
<!--副本越多,占用存储越多-->
<value>1</value>
</property>
<!--还可以定义blocksize,切块的大小,默认是128M(2.x中)-->


(4)mapred-site.xml

里面只有一个mapred-site.xml.template文件,执行

# cp mapred-site.xml.template mapred-sit.xml

<property>
<!--mapreduce应该放在哪个资源调度集群中去跑-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>


(5)yarn-site.xml

<property>
<!--yarn中的老大(Resourcemanager)的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<!--reducer获取数据的方式-->
<!--nodemanager是集群中的从节点,配置的东西是的mapreduce程序正常跑
指定mapreduce程序里面map产生的中间结果如何传给reduce,采用shuffle-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>


(6)slaves

  i. slaves指定哪些机器上要启动datanodes

  ii. 它的默认值是localhost

  iii. 第一行设置namenode、其余行设置datanodes

hdfs是一个文件系统,初次使用要格式化

#hdfs namenode -format

出现has been successfully formated,格式化成功



格式化后在HADOOP_HOME/data/dfs/name/current中保存的文件就是元数据fsimage_000000000000000000000:namenode就是管理元数据的(hdfs中某个文件对应了哪些切块,这些切块在哪些datanode主机上面)

启动Hadoop

切换到HADOOP_HOME/sbin下

其中文件有start-all.sh、stop-all.sh、start-dfs.sh、stop-dfs.sh、start-yarn.sh和stop-yarn.sh等,分别为开始和停止进程

需要注意的是,没启动一个节点,都需要输入密码,在最后将介绍无密钥登录以及如何配置多个datanode

启动hdfs(Hadoop的分布式文件管理系统):# start-dfs.sh



然后启动yarn(资源管理调度):#start-yarn.sh



使用jps查看java进程,出现以下进程,说明启动成功



这样Hadoop的伪分布模式就安装、配置并且启动成功了!!

测试

在浏览器中(如果没有安装CentOS的桌面,可以用你的windows中浏览器)打开http://master:50070,(windows中可以使用http://192.168.1.100:50070)看到如下界面说明成功:



向hdfs中发送和下载文件

向hdfs传输文件:# hadoop fs -put 文件名(具体路径) hdfs://master:端口号

上传的文件仍然存储在本地,但不是原文件的地址,因为上传到hdfs中的文件,是被切分为了几个小块(BLOCK),保存在了不同的DataNode中(伪分布模式下仍然在NameNode中)

上传的文件可以进入http://master:50070查看,也可以通过# hadoop fs -ls 目录查看

从hdfs下载文件:# hadoop fs -get /目录/文件名 保存的目录/保存的文件名

可以使用“/”代替hdfs:/master:90000

测试MapReduce,运行几个MapReduce中自带的例子,在HADOOP_HOME/share/hadoop/mapreduce下的hadoop-mapreduce-examples-2.7.3.jar中有许多示例程序,切换到该目录下

运行pi,求圆周率:# hadoop jar hadoop-mapreduce-examples-2.7.3.jar pi 5 5





运行wordcount,求词频,创建一个包含英文单词的test.txt:

上传文件:# hadoop fs -mkdir /wordcount

     # hadoop fs -mkdir /wordcount/input

     # hadoop fs -put word.txt /wordcount/input

运行:# hadoop jar hadoop-mapreduce-example-2.7.3.jar wordcount /wordcount/input /wordcount/output,output自动生成

结束后查看结果:

# hadoop fs -ls /wordcount/output

# hadoop fs -cat /wordcount/ouput/part-r-00000



ad63

配置SSH无密钥访问

这个配置以及ssh的原理在网上很多,这里只简单写一下配置的过程:

假设namenode节点的主机是master(192.168.1.100),其余datanode的主机分别为slaver1(192.168.1.101),slaver2(192.168.1.102),slaver3(192.168.1.103)

配置hosts:#vim /etc/hosts,添加如下内容

192.168.1.100 master

192.168.1.101 slaver1

192.168.1.102 slaver2

192.168.1.103 slaver3

分别在各主机检查ssh服务状态(CentOS默认开启)

# service sshd status

如果没有安装:# yum install openssh-server openssh-clients

如果没有启动:# service sshd start

分别在各主机生成密钥

ssh-keygen -t rsa #生成密钥的方法是rsa,一直按回车知道结束

务必在每个主机上都生成,生成目录在家目录的.ssh目录中,其中id_rsa文件为私钥,id_rsa文件为公钥

在每个slaver中(第i个)执行如下命令:

将每个公钥重命名

# scp ~/.ssh/id_rsa.pub ~/.ssh/slaveri.id_rsa.pub

将每个datanode的公钥发送给master

# scp ~/.ssh/slaveri.id_rsa.pub master:~/.ssh

在master中执行,切换到.ssh目录下:

将master自己的公钥放入authorized_keys中:# cp id_rsa.pub authorized_keys

将每个slaver的公钥放入authorized_keys

# cat slaver1.id_rsa.pub >>authorized_keys

# cat slaver2.id_rsa.pub >>authorized_keys

# cat slaver3.id_rsa.pub >>authorized_keys

将authorized_keys再发送给每一个slaver

# scp authorized_keys slaver1:~/.ssh

# scp authorized_keys slaver2:~/.ssh

# scp authorized_keys slaver3:~/.ssh

这样ssh无密钥访问就配置完成了!!就不用每次都输入密码确认了

配置其它datanodes:

在master中配置完成JDK后,使用ssh将jdk发送到其他每个主机(#scp -r /opt/jdk slaver:/opt/,放到同样目录,便于配置),在/etc/profile中添加同样内容即可

在master中将hadoop配置完成后(在slaver文件中添加这三个节点名),同样的将hadoop发送到其他节点,然后在/etc/profile中添加同样内容即可

启动hadoop只需要在master中启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop centos 安装 配置