有效搭建Hadoop教程

一、组件简介

Hadoop的核心为HDFS(分布式文件系统)和MapReduce(离线计算框架)。HDFS就是将要储存的文件分散在不同的硬盘上,并记录他们的位置,而MapReduce就是将计算任务分配给多个计算单元。
Hadoop=HDFS+Yarn+MapReduce+Hbase+Hive+Pig+…

1、HDFS:分布式文件系统,隐藏集群细节,可以看做一块儿超大硬盘
HDFS已经成为现在大数据的储存标准,他适合储存一次写入,多次读取的数据,并且他有自动检错、快速回复数据的功能,能够避免数据因为硬盘损坏而丢失的危险。
HDFS是由DataNode和NameNode组成的,DataNode负责储存数据,而NameNode负责管理数据,一个NameNode对应多个DataNode,NameNode记录着每个DataNode储存的数据内容,并曝露给上层系统调用,也会根据上层的指令对DataNode进行增、删、复制。
主:namenode,secondarynamenode
从:datanode

2、YARN和Zookeepr都是用来管理的,YARN是面对计算资源的管理,而Zookeeper是面对服务器集群的管理
YARN:资源管理框架,用来管理和调度CPU、内存的资源,避免所有的计算资源被某些任务大量占用,有点像是云管理平台可以创造不同的容器和虚拟机,并将这些硬件资源按用户的意愿分配给计算任务。
主:ResourceManager
从:NodeManager
Zookeeper:集用来做群管理,跟微服务里的功能相似,可以在集群里面选出一个leader,并保证集群里面服务器的一致性、可靠性和实时性。
主:QuorumPeerMain
从:QuorumPeerMain

3、MapReduce:是将计算任务分配给数据就近的处理节点,进行完运算后再合并导入结果,能很好的去进行大量数据的调取,但是延时较高,不适合处理实时流数据。MapReduce可以分为Map和Reduce两个处理步骤。首先Map将用户输入的指令解析出一个个的Key/Value,然后再将转化成一组新的KV值,将原本的任务拆解成小的而且是临近数据的,并且确保这些运算任务彼此不会影响。而Reduce则是将这些运算的结果汇总起来,将结果写入。

4、Pig:基于hadoop的一门数据处理语言,类似于python等编程语言

5、Hbase:Hadoop下的分布式数据库,类似于NoSQL,用来储存和查询非结构化和半结构化数据的工具,利用row key的方式来访问数据
主:HRegionserver,HMaster,HPeerMain(在使用zookeeper作为协调时没有此进程)

6、Hive:分布式数据仓库,让开发人员可以像使用SQL一样使用MR。将Hadoop包装成使用简单的软件,用户可以用比较熟悉的SQL语言来调取数据,也就是说,Hive其实就是将Hadoop包装成MySQL。Hive适合使用在对实时性要求不高的结构化数据处理。

7、Storm:前面两个都是用来处理非实时的数据,对于某些讲求高实时性(毫秒级)的应用,就需要使用Storm。Storm也是具有容错和分布式计算的特性,架构为master-slave,可横向扩充多节点进行处理,每个节点每秒可以处理上百万条记录。可用在金融领域的风控上。

8、Impala:Impala和Hive的相似度很高,最大的不同是Impala使用了基于MPP的SQL查询,实时性比MapReduce好很多,但是无法像Hive一样可以处理大量的数据。Impala提供了快速轻量查询的功能,方便开发人员快速的查询新产生的数据。

9、Scoop:用于将传统数据库中数据导入到hbase中一个导入工具。

10、Spark:基于内存的分布式处理框架
主:Mater
从:worker

二、搭建步骤

安装包链接:
链接:https://pan.baidu.com/s/1dWS3xAHuicEl3YnzVlpMrQ
提取码:04fb
hadoop-2.8.3.tar.gz
jdk-8u202-linux-x64.tar.gz

master:192.168.120.133
node1:192.168.120.156
node2:192.168.120.157

步骤一、配置下每台主机的/etc/hosts文件(所有机器)

# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.120.133 master
192.168.120.156 node1
192.168.120.157 node2

步骤二、关闭防火墙(所有机器)

# systemctl stop firewalld
# systemctl disable firewalld
 # setenforce 0
 # vim /etc/selinux/config
 SELINUX=disabled

步骤三、安装java(所有机器)

# tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt
# vi ~/.bashrc
export JAVA_HOME=/opt/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
# source ~/.bashrc 
# java -version

步骤四、免秘钥ssh登录(所有机器)

# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 0600 ~/.ssh/authorized_keys
然后尝试下能不能免秘钥 ssh localhost ,如果可以,再将自己的公钥给两个node
# ssh-copy-id root@node1
# ssh-copy-id root@ndoe2
对于其它两个node,也执行同样的命令,然后将公钥分别交给另外两台机器,至此三台虚拟机间就可以相互无秘钥切换了。

步骤五、安装hadoop修改配置(master主机)

# tar -zxvf hadoop-2.8.3.tar.gz -C /opt
# cd /opt/hadoop-2.8.3/etc/hadoop/
# vim core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
        <property>
                <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        </property>
</configuration>
# vim hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
</property>
<property>

        <name>dfs.datanode.max.xcievers</name>

        <value>4096</value>

      <dedication>Datanode</dedication>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
</property>
<property>

        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
</property>
</configuration>
# vim mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
 <property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
  </property>

  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
  </property>
</configuration>
# vim yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!--日志保存时间 默认保存3-7-->	
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
<property> <!--ResourceManager 对客户端暴露的地址--> 
<name>yarn.resourcemanager.address</name> 
<value>master:8032</value> 
	</property> 
	<property> <!--ResourceManager 对ApplicationMaster暴露的地址-->  
		<name>yarn.resourcemanager.scheduler.address</name> 
		<value>master:8030</value> 
	</property> 
	<property> <!--ResourceManager 对NodeManager暴露的地址--> 
		<name>yarn.resourcemanager.resource-tracker.address</name>  
		<value>master:8031</value> 
		</property> 	
	<property> <!--ResourceManager 对管理员暴露的地址--> 
		<name>yarn.resourcemanager.admin.address</name>   
		<value>master:8033</value> 
	</property> 
	<property> <!--ResourceManager 对外web暴露的地址,可在浏览器查看-->   
		<name>yarn.resourcemanager.webapp.address</name> 
		<value>master:8088</value> 
	</property>
</configuration>

步骤六、修改环境变量(master主机)
修改yarn-env.sh和hadoop-env.sh
#将这句话放到带有java_home的位置,主要是有时候它就是不认你配置的java_home环境变量
export JAVA_HOME=/opt/jdk1.8.0_202

# vim yarn-env.sh
export JAVA_HOME=/opt/jdk1.8.0_202

在这里插入图片描述

# vim hadoop-env.sh
export JAVA_HOME=/opt/jdk1.8.0_202

在这里插入图片描述

# vim slaves
node1
node2
将hadoop添加到环境变量,修改~/.bashrc
# vim ~/.bashrc
export JAVA_HOME=/opt/jdk1.8.0_202
export HADOOP_HOME=/opt/hadoop-2.8.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source ~/.bashrc

步骤七、同步文件到node1、node2(master主机)

# scp -r /opt/ root@node1:/
# scp -r /opt/ root@node2:/
# scp ~/.bashrc root@node1:/root/.bashrc
# scp ~/.bashrc root@node2:/root/.bashrc
两台机器上分别 source ~/.bashrc

步骤八、初始化namenode、启动hadoop(master主机)

# hdfs namenode -format
# start-dfs.sh
# start-yarn.sh
master节点上输入jps:
# jps
64244 ResourceManager
64089 SecondaryNameNode
63899 NameNode
74812 Jps
两个node节点:
# jps
1568 DataNode
4899 Jps
1678 NodeManager

步骤九、测试hadoop
浏览器访问192.168.120.133:8088
在这里插入图片描述
节点状态running

步骤十、hadoop 自带的mapreduce 用例

# cd /opt/hadoop-2.8.3
# hdfs dfs -mkdir /user
# hdfs dfs -mkdir /user/fay
# hdfs dfs -put etc/hadoop input
# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar grep input output 'dfs[a-z.]+'
# 没有报java错误,那就ok,在output目录查看下输出结果:
# hdfs dfs -cat output/*
6	dfs.audit.logger
4	dfs.class
3	dfs.logger
3	dfs.server.namenode.
2	dfs.audit.log.maxfilesize
2	dfs.period
2	dfs.audit.log.maxbackupindex
1	dfsmetrics.log
1	dfsadmin
1	dfs.webhdfs.enabled
1	dfs.servers
1	dfs.replication
1	dfs.permissions.enabled
1	dfs.log
1	dfs.file
1	dfs.datanode.max.xcievers
1	dfs.namenode.secondary.http
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值