Hadoop集群搭建2->Linux搭建Hadoop集群(超详细闷骚版)
一.hadoop是什么Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明显增加了Hadoop方面的投入。二 .hadoop能干什么hadoop擅长日志分析,facebook就用Hive来...
一.hadoop是什么
Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明显增加了Hadoop方面的投入。
二 .hadoop能干什么
hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)
三.hadoop生态系统及其核心模块构成
hadoop1.x版本核心模块
1、HDFS:Hadoop Distributed File System 分布式文件系统
2、MapReduce:分布式运算框架
hadoop2.x版本的核心某块
3、YARN:Yet Another Resource Negotiator 资源管理调度系统
四、了解知名企业的Hadoop应用案例,了解Hadoop的三种部署方式
1、单机版搭建
2、伪分布式搭建
3、完全分布式搭建
五.搭建Hadoop
1.准备好三台虚拟机,没有搭建的请看我的博文Hadoop集群搭建1
2.在Hadoop1上安装jdk1.8,因为之前用到的外网访问和操作Hadoop的HDFS的时候,jdk1.7好像不太好使,经过试验还是安装linux版1.8的jdk
链接:https://pan.baidu.com/s/1yc0NWwibeUfmg2VsUFGiRg
提取码:my7w
我的百度网盘大家可以下载一下
安装一个访问虚拟机的SSH工具,都可以像什么Xshell都可以只是我习惯了SSH
安装也很简单一直下一步就ok,我给大家上传到我的百度云里,大家可以自行下载,
链接:https://pan.baidu.com/s/1yc0NWwibeUfmg2VsUFGiRg
提取码:my7w
进入虚拟机里边输出命令ifconfig
,看一下自己虚拟机的ip
进行SSH连接,对了那个SSH是放到window安装的啊,别搞到虚拟机里边安装
YES
输入密码
进入SSH连接页面
root权限操作
把下载好的JDK1.8放到虚拟机里边
编辑命令: cd /usr/
进入usr目录创建一个文件夹 mkdir jdk
创建一个jdk的文件夹
cd /jdk
进入jdk文件夹 然后把拖拉来的jdk给放置到这个目录下
然后对jdk进行解压缩
tar -zxvf jdk-8u131-linux-x64.tar.gz
然后进行配置jdk
vim /etc/profile
export JAVA_HOME=/usr/jdk/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
然后执行一下脚本
[root@hadoop1 jdk1.8.0_131]# source /etc/profile
检测一下是否安装成功,看一下jdk的版本信息 java -version
2.同步虚拟机时间
同步三台虚拟机的时间(时间同步)每台机器都要做同样的 操作
开启你的三台虚拟机
输入命令
yum -y install ntp
执行命令
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
在输入命令
ntpdate pool.ntp.org
注意:如果电脑可以上网,但是虚拟机不可以上网,可以如下操作
编辑
vim /etc/resolv.conf
添加如下两行指令
nameserver 202.106.0.20
nameserver 8.8.8.8
如果没法保证每台虚拟机都联网,只能用小手该时间
date命令将日期设置为当前时间
---- date -s 06/18/14
将时间设置为14点20分50秒
---- date -s 14:20:50
将时间设置为当前时间(MMDDhhmmYYYY.ss)
----date 0618141614.30
3.设置主机名
根据自己的ip来定义
192.168.94.128 设置这台机器的主机名为master
192.168.94.129 设置这台机器的主机名为slaver1
192.168.94.130 设置这台机器的主机名为slaver2
在192.168.94.128这台机器执行操作
新增用户
adduser master
修改密码:
passwd master
提示输入密码和再次确定
修改主机名 vim /etc/sysconfig/network
4、给master用户root权限
chmod +w /etc/sudoers
vim /etc/sudoers
添加如下操作
master ALL=(ALL) ALL
重启虚拟机,选择master用户登录
注意:另外两台机器也做同上的操作(名字分别为slaver1和slaver2)
5、修改主机映射(三台机器都是一样的操作)
vim /etc/hosts
把hosts中的内容都删除,然后添加如下
根据自己的ip地址来填写
192.168.94.128 master
192.168.94.129 slaver1
192.168.94.130 slaver2
重启网卡
service network restart
剩下的两台机器,做同上操作(ip和mac地址是不一样)
6、配置三台机器之间的免密登录(必须在主机master上操作)
ssh-keygen -t rsa
然后四个回车
接着输入脚本
输入你的要的密码三台机器都要开机启动,在master主机器上执行
ssh-copy-id master
ssh-copy-id slaver1
ssh-copy-id slaver2
测试: ssh slaver1 就不需要输入密码 然后在exit到当前用户,可以执行下一次测试,如下图直接进入了slaver1机器上
7、下载hadoop压缩包,解压(以下的所有操作都在主机上 进行) 温馨提示:最好在官网下载,src的源码,然后在自己的机器上编译,这样就不会出现找不到jar包的异常
链接:https://pan.baidu.com/s/1jCwg2aMs0OzOHnd1qXp3Kw
提取码:1kxs
也可以用我的Hadoop包,我这个是2018年的tar之前一直没有更新,不过这个Hadoop版本还是挺稳定的
把hadoop解压到/usr/local/目录下
tar -zxvf hadoop-2.8.4.tar.gz -C /usr/local
把hadoop-2.8.4改名为hadoop
进入到/usr/local/下执行
mv hadoop-2.8.4 hadoop
8、配置hadoop环境变量(也在主机下执行)
vim /etc/profile
修改配置文件,如下图
一定要动手操作,不然复制过去还是一脸懵逼,要体验Hadoop配置的精髓😂
export JAVA_HOME=/usr/jdk/jdk1.8.0_131
export JRE_HOME=$JAVA_HOME/jre
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
立即让配置文件生效,执行命令
source /etc/profile
此时,可以直接使用hadoop指令了,查看hadoop版本信息命令
hadoop version
9、关闭防火墙(三台机器都要关闭)
service iptables status (查看防火墙状态)
service iptables stop(临时关闭,不需要重启虚拟机)
chkconfig iptables off(永久关闭,需要重启机器生效)
10、修改主机的配置文件
进入到/uer/local/hadoop
文件夹
然后创建三个文件夹,
NameNode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息在系统启动时由数据节点重建
datanode是数据块在DataNode进程所在的节点上以文件的形式存储在本地磁盘上
一个是数据本身一个是元数据(数据块的长度,块数据的校验和,以及时间戳)
mkdir namenode
mkdir datanode
mkdir tmp
进入到 /usr/loacal/hadoop/etc/hadoop
文件
然后进行编辑配置文件
vim hadoop-env.sh
原文件
改后文件
编辑第二个文件 core-site.xml
vim core-site.xml
在configuretion中添加
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
改后效果
编辑第三个文件
vim hdfs-site.xml
添加如下配置
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name> <value>/usr/local/hadoop/datanode</value>
</property>
效果如下
然后准备编辑第四个文件,vim mapred-site.xml
(没有mapred-site.xml
但是有一个 mapred-site.xml.template
5、,我们可以把名字改一下就可以了)
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
然后添加
添加配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
效果如下
新增配置最后一个文件,编辑第五个文件yarn-site.xml
,坚持就是胜利🤞
vim yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>500</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2000</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
配置环节就到此结束了,现在开始最后一个编辑,配置一下机器的名称
vim slavers
然后记得编辑的那些东西保存啊,我没有写保存,你们一定要保存啊,不然就白费了,编辑好的文件 esc一下 然后输入:wd
保存
11、下发配置文件到分机上
下发hadoop到分机
两个都要执行哦
scp -r /usr/local/hadoop root@slaver1:/usr/local/
scp -r /usr/local/hadoop root@slaver2:/usr/local/
只是下发jdk的安装包,我的分机都没有安装,所以需要下发一下我的jdk文件
scp -r /usr/jdk root@slaver1:/usr/jdk/
scp -r /usr/jdk root@slaver2:/usr/jdk/
执行成功后记得去改下配置文件
主机配置了jdk和hadoop,但是分机没有配置,所以需要手动的去配置一下,如果懒得小伙伴可以这样
直接下发配置脚本
scp -r /etc/profile root@slaver1:/etc/
scp -r /etc/profile root@slaver2:/etc/
ok,大功告成,现在到启动了一步了,成不成功再次一举啊!!!
12、第一次执行的时候在主机下格式化namenode
hadoop namenode -format
13、启动hadoop集群
start-all.sh
启动成功后,可以检查一下启动状态
jps
这个就是成功的集群状态,一定要有nameNode和dataNode没有的小伙伴就检查一下配置
14.访问:50070
端口
外网访问一下http://192.168.94.128(主机ip):50070/
出现这个代表你的nameNode是启动成功的
15.访问8088
端口,
成功如下图
看到了那个大象了吗?那个就是Hadoop的logo,开心吗?哈哈
16、测试mapreduce来实现对pi的计算
进入到/usr/local/hoaddop/shared/hadoop/mapreduce
执行 (这个就是测试集群,用Hadoop进行π运算)
hadoop jar hadoop-mapreduce-examples-2.8.4.jar pi 20 50
可能时间会长一点,但是一定要耐心等待啊,这可是大数据计算
恭喜你成功了!!!
17、关闭集群
stop-all.sh
感谢大家的观看,有什么建议或者我写的那点不对,大家可以评论或者私信,感谢大家的点评,配置和启动集群问题,可以私信给我,我会尽我的最大努力去解决问题!🤞
更多推荐
所有评论(0)