**
Hadoop安装
**
Hadoop官网:http://hadoop.apache.org/
一、Hadoop的安装方式:
1.单机安装(不是集群)
在本地进行解压安装,不用配置配置文件,不存在分布式文件系统
2.伪分布式集群安装(安装在单个节点)
在本地进行解压安装,需要配置配置文件,存在分布式,但是分布式只有一个节点。主节点和子节点在同一台主机上(学习,测试)
3.完全分布式集群安装(分布式安装)
几台机器共同进行安装,组成一个集群,需要进行配置的,存在分布式
学习使用,公司里不会用,存在单点故障的问题
4.高可用完全分布式集群安装(zookeeper)
5.联邦
安装版本
原生apache Hadoop 学习
公司 cdh(商业版本)
二、伪分布式安装
1、准备工作
(1)设置静态的IP地址(必须)
sudo systemctl restart network
(2)修改主机名称(必须)
sudo vim /etc/hostname
修改完之后重启reboot
(3)修改hosts文件(IP和主机映射的。必须的)
sudo vim /etc/hosts
(4)关闭防火墙
(5)可选关闭selinux—linux的安全文件系统
sudo vim /etc/selinux/config
红框改为SELINUX=disabled
2、安装SSH
rpm –qa | grep ssh
如上图就是已经安装过了,不用安装,如果没有
sudo yum –y install openssh
配置SSH免密码登录(必须做的)
`ssh-keygen –t rsa` #生成密钥
拷贝公有的密钥到你要登录的机器中
测试
3、安装JAVA环境
3.1先卸载原来的Java环境
3.2上传安装进行解压安装
3.2.1如果当前用户无法使用sudo
Vim /etc/sudoers
保存 :wq!
3.2.2解压安装JDK
(1)解压
(2)修改名称,修改属组和属主
3.3配置环境变量
修改vim /etc/profile文件添加以下内容
让修改的文件生效
3.4测试Java环境是否安装成功
4、安装Hadoop
4.1下载安装包上传服务器
4.2 解压安装Hadoop
sudo tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
4.3修改名称及属主属组
4.4配置Hadoop环境变量
vim /etc/profile
export JAVA_HOME=/home/hadoop/apps/java
export HADOOP_HOME=/home/hadoop/apps/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile
bin:hdfs mapreduce的命令
sbin:启动或关闭hdf或者mapreduce程序的命令
4.5测试
4.6配置HDFS
(1)修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh
配置java的环境变量
(2)修改/usr/local/hadoop/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zxy/tmp/hadoop</value>
</property>
</configuration>
(3) 修改/usr/local/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
4.7启动测试HDFS
第一步:必须要先格式化(第一次启动)
第二步,启动hdfs
./start-dfs.sh
第三步:查看进程
Web网页测试
4.8配置YARN及MapReduce
(1)修改mapred-site.xml
通过mapred-site.xml.template创建mapred-site.xml文件
执行 :cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(2) vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
4.9启动测试mapreduce
./start–yarn.sh
Jps进程查看
Web网页查看
5、建议做快照
三、案例演示
hdfs保存数据的文件系统
根目录是/
将本地数据保存至hdfs的/目录下
hdfs dfs -put wordcount.txt /
Yarn跑的是mapreduce计算
自己根据业务开发mapreduce程序
Hadoop中的示例程序/usr/local/hadoop/share/hadoop/mapreduce
计算一下wordcount.txt每个单词出现的个数(计算的文件在hdfs上,输出的结果也在hdfs)分为两个任务:
Map任务
Reduce任务
执行命令:`
hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /wordcount.txt /out1`
最终结果
四、集群搭建中遇到的问题
(1)格式化的时候报错
可能是配置文件出错
主机找不到 (1)ip配置出错,(2)ip和主机映射文件出问题
core-site.xml
配置的保存数据的文件 /home/stud,要根据自己的实际目录进行配置
如:/home/xxx/
(2)关于hdfs的格式化问题
如果格式化成功之后,就不要再进行格式化了
如果格式化失败,边修改边进行格式化,一直到必须成功
为什么格式化成功之后不能再进行格式化:
hdfs namenode -format
在格式化的时候,创建了name文件夹(包括里面的文件) VERSION
操作hdfs在data的目录中也会有VERSION文字
如果再进行一次格式化
通过JPS查看的进程就没有datanode
解决以上问题的方法:
1.关闭所有的进程hdfs
2.删除name和data目录,或者把整个/home/stud/tmp
3.重新进行格式化
五、完全分布式安装(以3台为例)
1.准备工作
1.1修改主机名称
1.2设置静态的IP的
1.3配置hots文件
1.4设置免密码登录(从一台机器登录到另一台机器)
1.4.1生成密钥
在三台机器分别执行ssh-keygen -t rsa
1.4.2三台主机都要执行下面的操作
互相复制公钥到每台机器(在每台机器中都执行以下三个命令)
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata101
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata102
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata103
1.5关闭防火墙和selinux
关闭防火墙命令:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
关闭selinux:
vi /ect/selinux/config
2.主机进行时间同步
让所有的主机都在一个时间
不能联网采用 date –s “2019-05-13 00:00:00”
如果可以联网:ntpdate 公用时间服务器
yum –y install ntpdate
ntpdate ntp1.aliyun.com
3.安装JDK
三台都需要安装,我们可以安装一台,向其他两台中去分发
Hadoop101中安装
3.1解压修改名称
3.2在用户变量中配置JAVA的环境变量
4.安装Hadoop并配置环境变量
5.进行集群规划
hdfs :namenode seconarynamenode datanode
Yarn :resourceManager nodeManager
主节点一个 从节点 采用3个
在本次安装中,主机名分别为hadoop101 hadoop102 hadoop103
6.修改配置文件
6.1配置hadoop-env.sh
修改JAVA_HOME
6.2配置 core-site.xml
<configuration>
<!--配置hadoop的主节点namenode的地址-->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!--配置hadoop运行产生的临时文件保存目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/stud/app/tmp/hadoop/hadoopdata</value>
</property>
</configuration
6.3配置hdfs-site.xml
<configuration>
<!--存储namenode数据的目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/stud/app/tmp/hadoop/dfs/name</value>
</property>
<!--datanode的数据的目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/stud/app/tmp/hadoop/dfs/data</value>
</property>
<!--配置默认的数据的副本的个数,默认共3个副本
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
-->
<!--配置secondaryNamenode节点-->
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop102:50090</value>
</property>
</configuration>
6.4配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
6.5.配置yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--配置resourceManager运行在哪台主机上-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
</configuration>
6.6配置从节点(必须要)
hadoop/etc/hadoop/slaves
7.分发安装包到hadoop102 hadoop103
将app目录分发到另外两台机器
scp -r /home/stud/app stud@hadoop102:/home/stud
scp -r /home/stud/app stud@hadoop103:/home/stud
将.bashrc(配置环境变量的文件)分发到另外两台机器
scp .bashrc stud@hadoop102 :/home/stud
scp .bashrc stud@hadoop103:/home/stud
分别在hadoop102和hadoop103执行source .bashrc命令
8.进行格式化
hdfs namenode -format
9.启动HDFS
9.1执行启动命令
hdfs主节点配置在hadoop101上,在hadoop101中启动hdfs
9.2JSP查看每个节点的进程
Hadoop101:
Hadoop102
Hadoop103
9.3通过web网页查看
192.168.240.101:50070
10.启动YARN
10.1执行启动命令
Yarn的主节点配置在hadoop103上,在hadoop103启动
./start-yarn.sh
10.2JPS查看每个节点的进程
hadoop103的进程
Hadoop102的进程
Hadoop101的进程
10.3网页web查看
11.hdfs与yarn启动时如果不在主节点
1.hdfs主节点hadoop101
在hadoop102中启动,所有的进程都正常启动了
2.启动yar 主节点hadoop103
在hadoop102中启动,resourceManager进程是无法启动的
总结:hdfs可以在任意的节点启动,建议在主节点启动
Yarn是只能在yarn的主节点启动,如果在其他非主节点启动,resourceManager启动不了的