Hadoop配置

介绍

Hadoop是apache基于Google的集群系统理论进行的一种开源实现。

Hadoop集群系统:
HDFS:用于分布式文件的存储
MapReduce:用于数据的计算
HBase:用于任务调度。hadoop2.0才出现的

设计初衷:
为了解决Nutch(类似于Google的一种搜索引擎)的海量数据存储和处理的需求。一开始HDFS和MapReduce只是作为Nutch的两个组件来使用的,后来发现他们不仅能用于搜索,更可以解决大数据场景下数据的存储和处理,所以就单独组成了hadoop。

注意:
hadoop处理的是离线的数据,只有在数据已知并且不要求实时性场景下使用。

下载:

http://hadoop.apache.org/releases.html

版本说明:

Hadoop版本分为三代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则NameNode HA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性

安装:

hadoop安装分为单机、伪分布、完全分布三种方式

单机模式:单机模式是Hadoop的默认模式。当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守地选择了最小配置。在这种默认模式下所有3个XML文件均为空。当配置文件为空时,Hadoop会完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。

伪分布模式:hadoop守护进程运行在本地,模拟一个小规模的集群。可以使用HDFS、Mapreduce

完全分布模式:Hadoop守护进程运行在一个集群上。启动所有的守护进程,具有hadoop完整的功能,可以使用hdfs、mapreduce和yarn,并且这些守护进程运行在集群中,可以真正的利用集群提供高性能,在生产环境下使用。

(这里,我介绍的是伪分布模式,方便程序员进行小规模测试)

伪分布模式安装:

  1. 关闭防火墙

    service iptables stop;#立即关闭防火墙,重启后失效
    chkconfig iptables off;#关闭防火墙,重启后生效
    
  2. 配置主机名

		$vim    /etc/sysconfig/network
		$source /etc/sysconfig/network;#使配置生效
	例如:
	      NETWORKING=yes
	      HOSTNAME=hadoop

	注:安装hadoop集群主机名不能有下划线。否则会找不到主机,无法启动!!!
  1. 配置Hosts
		$vim  /etc/hosts
		IP地址  主机名
	例如:
		10.9.25.217 hadoop
  1. 配置免密互通

Hadoop底层是基于RPC来实现的,所以就意味着Hadoop中的很多操作都是通过网络进行信号的传输,也就意味着如果想要访问其他的节点,都需要输入密码。

		$ssh-keygen;#生成自己的公钥和私钥,生成的公私钥将自动存放在 /root/.ssh目录下。
	
		$ssh-copy-id [user]@[host];#把生成的公钥copy到远程机器上
		#此时在远程主机的/root/.ssh/authorized_keys文件中保存了公钥,在known_hosts中保存了已知主机信息,当再次访问的时候就不 需要输入密码了。
		
		$ssh [host]; #通过此命令远程连接,检验是否可以免密连接
  1. 安装jdk
    Hadoop本身就是使用Java语言完成的,所以Hadoop的运行环境中必须有JDK支持

  2. 下载hadoop,并上传到linux上:这里我放在了/home/software下

    解压安装包:tar -xvf /home/software/hadoop-2.7.1_64bit.tar.gz [/home/software]

配置hadoop

$vim  [hadoop]/etc/hadoop/hadoop.env.sh

将export JAVA_HOME=${ JAVA_HOME}修改为具体的路径
例:export JAVA_HOME=/home/presoftware/jdk1.8

  • 修改core-site.xml,增加namenode配置、文件存储位置配置
		$vim [hadoop]/etc/hadoop/core-site.xml

		<configuration>
			<property>
				<!--用来指定hdfs的老大,namenode的地址-->
				<name>fs.defaultFS</name>
				<value>hdfs://hadoop01:9000</value>
			</property>
			<property>
				<!--用来指定hadoop运行时产生文件的存放目录-->
				<name>hadoop.tmp.dir</name>
				<value>/home/park/work/hadoop-2.7.1/tmp</value>
			</property>
</configuration>
  • 修改hdfs-site.xml,配置包括自身在内的备份副本数量
		$vim [hadoop]/etc/hadoop/hdfs-site.xml
		
		<configuration>
			<property>
				<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
				<!--伪分布式模式,此值必须为1-->
				<name>dfs.replication</name>
				<value>1</value>
			</property>
		</configuration>
  • 修改mapred-site.xml
$cp mapred-site.xml.template mapred-site.xml
$vim [hadoop]/etc/hadoop/mapred-site.xml

<configuration>
<property>  
       <!--指定mapreduce运行在yarn上-->
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>
</configuration>
  • 修改yarn-site.xml
$vim [hadoop]/etc/hadoop/yarn-site.xml

<configuration>
   <property>
       <!--指定yarn的老大resourcemanager的地址-->
       <name>yarn.resourcemanager.hostname</name>
       <value>hadoop</value>
   </property>
   <property>
       <!--NodeManager获取数据的方式-->
       <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
   </property>
</configuration>
  • 修改slaves,因为hadoop本身是一个主从结构
$vim slaves

hadoop  #配置主机名

  • 配置hadoop的环境变量
vim /etc/profile
export HADOOP_HOME=/home/software/hadoop-2.7.1/
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
source /etc/profile

测试环境变量是否生效:
$echo $HADOOP_HOME

  • 重启linux
    $reboot
  • 格式化namenode
    进入hadoop/bin 输入命令格式化namenode
$hadoop namenode -format

在格式化的时候,会有这样的输出:Storage directory/tmp/hadoop-root/dfs/name has been successfully formatted

  • 启动hadoop
    在/home/app/hadoop-2.6.0/sbin目录下
    $start-all.sh
    查看是否启动成功:
    $jps
    如果启动成功会有5个文件
  • 关闭hadoop
    在/home/app/hadoop-2.6.0/sbin目录下
    $stop-all.sh
  • 通过浏览器访问hadoop管理页面
    http://[server_ip]:50070

hdfs命令

hadoop fs -mkdir /user/trunk
hadoop fs -ls /user
hadoop fs -lsr /user (递归的)
hadoop fs -put test.txt /user/trunk
hadoop fs -put test.txt . (复制到hdfs当前目录下,首先要创建当前目录)
hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下)
hadoop fs -cat /user/trunk/test.txt
hadoop fs -tail /user/trunk/test.txt (查看最后1000字节)
hadoop fs -rm /user/trunk/test.txt
hadoop fs -rmdir /user/trunk
hadoop fs -help ls (查看ls命令的帮助文档)

如果访问不了有可能是服务器50070端口被关闭了。通过如下方式打开50070端口:
service iptables status #查询防火墙状态
service iptables start #开启防火墙

iptables -I INPUT -p tcp --dport 80 -j ACCEPT #开通特定端口
iptables -I INPUT -p tcp --dport 80 -j DROP #关闭特定口
service iptables save #保存配置
service iptables restart #重启防火墙

注意:CentOS 7.0默认使用的是firewall作为防火墙
查看防火墙状态

firewall-cmd --state1

停止firewall

systemctl stop firewalld.service1

禁止firewall开机启动

systemctl disable firewalld.service 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值