第一部分 linux环境安装
hadoop是运行在linux上的
第一步 Vmware的安装
选择NAT模式配置
第二步 在vmware上安装linux
1、选择新建虚拟机
2、选择典型安装
3、稍后安装操作系统
4、客户机操作选择linux(L)
5、版本选择Centos 64位
6、给虚拟机起名,选择存储路径
7、设置最大磁盘大小,一般设置20G
8、将虚拟磁盘拆分成多个文件
9、点击完成创建,就创建了一个虚拟机,但是此时的虚拟机还是一个空壳,没有操作系统,接下来安装操作系统
10、点击编辑虚拟机设置,找到DVD,使用镜像,指定操作系统ISO文件所在位置。
image.png
11、开启此虚拟机,等待,直到出现以下页面,选择skip直接跳过
image.png
12、 设置root密码。
image13、 选择Desktop,这样就会装一个Xwindow。
image14、 先不添加普通用户,其他用默认的,就把Linux安装完毕了。
第三步 设置网络
由于我们刚安装的linux是没有ip的,所以我们要先获取ip
1.修改ip地址
1、开启虚拟机后先写一个脚本文件
touch reset_ip.sh
2、然后进入修改这个文件内容,也可以不用touch创建该脚本,直接用vi也能创建并且修改
vi reset_ip.sh
3、脚本内容如下,然后保存退出
#!/bin/bash
name=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=NAME=").*(?=")'|tail -1)
mac=$(cat /etc/udev/rules.d/70-persistent-net.rules |grep -oP '(?<=ATTR{address}==").*?(?=",)'|tail -1)
sed -i s/DEVICE.*/DEVICE=${name}/ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/HWADDR=.*/HWADDR=${mac}/ /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart
4、修改该脚本的权限
chmod u+x reset_ip.sh
或者
chmod 744 reset_ip.sh
5、执行该脚本,获取ip
./reset_ip.sh
6、使用ifconfig查询本机ip,出现以下界面即为成功
image.png
2.修改主机名
1)、临时修改 hostname name1
2)、永久修改 进入/etc/sysconfig/network修改,修改hostname为主机名
image.png
3.修改网关
网关配置文件为/etc/sysconfig/network文件
网关配置也可以在/etc/sysconfig/network-scripts/ifcfg-eth0中配置。
进入编辑模式,修改为以下内容
image.png
Linux网卡配置文件详解:
TYPE=Ethernet #网卡类型
DEVICE=eth0 #指出设备名称
ONBOOT=yes #设置为yes,开机自动启用网络连接
BOOTPROTO=static #启用地址协议 –static:静态协议 –bootp:协议 –dhcp:协议 -none:不指定协议[最好指定],禁止DHCP
IPADDR=192.168.1.11 #网卡IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.1.1 #网卡网关地址
DNS1=10.203.104.41 #网卡DNS地址 ,第一个dns服务器,设置主DNS
HWADDR=00:0C:29:13:5D:74 #网卡设备MAC地址
BROADCAST=192.168.1.255 #网卡广播地址
NM_CONTROLLED=yes #network mamager的参数,实时生效,修改后无需要重启网卡立即生效。
GATEWAY=192.168.21.2 #设置网关
DNS2=8.8.4.4 #第二个dns服务器,设置备用DNS
IPV6INIT=no #禁止IPV6
USERCTL=no #是否允许非root用户控制该设备,设置为no,只能用root用户更改
NAME="System eth0" #定义设备名称
4.修改/etc/hosts
hosts的作用:将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。
在文字最下面插入一行,写上ip,空格,设备名字
image.png
重点:修改windows的hosts文件,追加虚拟机ip和名称
5.重启网络
service network restart
6.关闭防火墙
1、当次生效
service iptables stop
2、永久生效
service iptables off
开启防火墙:
1、当次生效
service iptables start
2、永久生效
service iptables on
7.重启系统
reboot
第三步 JDK的安装
1、查看是否已经安装了java jdk
[root@hadoop3 /]# java -version
注意:Hadoop机器上的JDK,最好是Oracle的Java JDK,不然会有一些问题,比如可能没有JPS命令。
2、安装java jdk
1、下载Oracle 版本的jdk
2、使用winsp将jdk从windows拷贝到linux
3、解压到/opt/modules目录下,没有该目录就创建
[root@hadoop3 /]#tar -zxvf jdk-7u67-linux-x64.tar.gz -C /opt/modules
然后修改解压后的jdk名字为jdk1.8
4、添加环境变量,修改/etc/profile配置文件,追加
export JAVA_HOME=”/opt/modules/jdk1.8“
export PATH=$JAVA_HOME/bin:$PATH
修改完成后,保存并退出编辑模式,执行命令
[root@hadoop3 /]#source /etc/profile
5、再次执行 Java -version,查看是否完成安装,出现以下内容即为安装成功
image.png
第二部分 hadoop本地模式安装
Hadoop本地模式只是用于本地开发调试,这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。
image.png
1、下载hadoop
2、 创建一个存放本地模式hadoop的目录
[root@hadoop3 /]# mkdir -p /opt/modules/hadoopstandalone
2、 解压hadoop文件
[root@hadoop3 /]# cd /opt/modeules/hadoopstandalone/
[root@hadoop3 /]# tar -zxvf hadoop-2.8.3.tar.gz
3、 确保JAVA_HOME环境变量已经配置好
[root@hadoop3 hadoopstandalone]# echo ${JAVA_HOME}
/opt/modules/jdk1.8
3、运行MapReduce程序,验证
我们这里用hadoop自带的wordcount例子来在本地模式下测试跑mapreduce。
1、 准备mapreduce输入文件wc.input
[root@hadoop3 /]# mkdir -p /opt/data/
[root@hadoop3 /]#touch wc.input
[root@hadoop3 /]#vi /opt/data/wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
2、 运行hadoop自带的mapreduce,在/opt/modules/hadoopstandalone/hadoop-2.8.3/bin目录下运行
[root@hadoop3 bin]# ./hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /opt/data/wc.input output
image.png
这里可以看到job ID中有local字样,说明是运行在本地模式下的。
3、 查看输出文件
本地模式下,mapreduce的输出是输出到本地。
[root@hadoop3 /]# ll /opt/data/output
total 4
-rw-r--r-- 1 hadoop hadoop 60 Jul 7 12:50 part-r-00000
-rw-r--r-- 1 hadoop hadoop 0 Jul 7 12:50 _SUCCESS
输出目录中有_SUCCESS文件说明JOB运行成功,part-r-00000是输出结果文件。
第三部分:Hadoop伪分布式模式安装
这种模式也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点:(NameNode,DataNode,JobTracker,TaskTracker,SecondaryNameNode)
请注意分布式运行中的这几个结点的区别:
- 从分布式存储的角度来说,集群中的结点由一个NameNode和若干个DataNode组成,另有一个SecondaryNameNode作为NameNode的备份。
- 从分布式应用的角度来说,集群中的结点由一个JobTracker和若干个TaskTracker组成,JobTracker负责任务的调度,TaskTracker负责并行执行任务。TaskTracker必须运行在DataNode上,这样便于数据的本地计算。JobTracker和NameNode则无须在同一台机器上。一个机器上,既当namenode,又当datanode,或者说 既 是jobtracker,又是tasktracker。没有所谓的在多台机器上进行真正的分布式计算,故称为"伪分布式"。
1、创建用户
1)、创建一个hadood用户并设置密码
[root@hadoop3 bin]# useradd hadoop
[root@hadoop3 bin]# passwd hadoop
2)、切换到hadoop用户
[root@hadoop3 ~]#su - hadoop
3)、创建存放hadoop的文件夹
[root@hadoop3 ~]#sudo mkdir /opt/modules
4)、 将hadoop文件夹的所有者指定为hadoop用户
如果存放hadoop的目录的所有者不是hadoop,之后hadoop运行中可能会有权限问题,那么就讲所有者改为hadoop。
[root@hadoop3 ~]#sudo chown -R hadoop:hadoop /opt/modules
2、解压hadoop
1、 复制hadoop-2.8.3.tar.gz到/opt/modules目录下。
2、 解压hadoop-2.8.3.tar.gz
[root@hadoop3 ~]#cd /opt/modules
[root@hadoop3 modules]#tar -zxvf hadoop-2.8.3.tar.gz
[root@hadoop3 modules]#mv hadoop-2.8.3 hadoop
3、配置hadoop
1、 配置Hadoop环境变量
[root@hadoop3 ~]#vi /etc/profile
追加配置:
export HADOOP_HOME="/opt/modules/hadoop"
export PATH=HADOOP_HOME/sbin:$PATH
执行:source /etc/profile 使得配置生效
验证HADOOP_HOME参数:
[hadoop@bigdata-senior01 /]HADOOP_HOME
/opt/modules/hadoop
2、 配置 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件的JAVA_HOME参数
这几个文件所在的路径为:/opt/modules/hadoop/etc/hadoop
1)、修改hadoop-env.sh
[root@hadoop6 ~]#sudo vi /etc/hadoop/hadoop-env.sh
修改JAVA_HOME的参数为:
export JAVA_HOME="/opt/modules/jdk1.8"
2)、配置core-site.xml
配置之前先在opt目录下创建/data/tmp目录
[root@hadoop6 hadoop]#vi core-site.xml
添加两个属性
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop6:8020</value>(主机名:8020)
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/tmp</value>
</property>
3)、配置hosts,hostname,关闭防火墙
不要忘记在windows上的hosts文件中追加ip和设备名
hosts目录:C:\Windows\System32\drivers\etc
追加内容
192.168.159.135 hadoop6
3、启动hdfs
1)、配置hdfs-site.xml
[root@hadoop6 dadoop]#vi hdfs-site.xml
添加属性
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
dfs.replication配置的是HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以这里设置为1
2)、 格式化HDFS
作用:对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据的存储在NameNode中
[root@hadoop6 dadoop]#hdfs namenode -format
只需要格式化一次
image.png
格式化后,查看core-site.xml里hadoop.tmp.dir(本例是/opt/data/tmp目录)指定的目录下是否有了dfs目录,如果有,说明格式化成功
4、启动NameNode
当前目录:/opt/modules/hadoop/sbin
[root@hadoop6 sbin]#hadoop-daemon.sh start namenode
5、启动DataNode
[root@hadoop6 sbin]#hadoop-daemon.sh start datanode
6、启动SecondaryNameNode
[root@hadoop6 sbin]#hadoop-daemon.sh start secondarynamenode
6、 JPS命令查看是否已经启动成功,有结果就是启动成功了。
image.png在浏览器输入网址http://hadoop3:50070,出现以下页面,说明成功
7、 HDFS上测试创建目录、上传、下载文件
1)、创建input文件夹
[root@hadoop6 ~]#hdfs dfs -mkdir /input
2)、上传本地文件到HDFS上
首先创建一个wc.input文本,写一些单词进去
[root@hadoop6 ~]#vi wc.input
[root@hadoop6 ~]#hdfs dfs -put wc.input /input
3)、读取文件内容
[root@hadoop6 ~]#hdfs dfs -cat /input/wc.input
4)、从hdfs下载到本地
[root@hadoop6 ~]#hdfs dfs -get /input/wc.input
8、配置启动yarn
文件目录为:/opt/modules/hadoop/etc/hadoop
1)、 配置mapred-site.xml
首先复制mapred-site.xml.template配置模板文件为mapred-site.xml
[root@hadoop6 hadoop]#cp mapred-site.xml.template mapred-site.xml
添加配置:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
指定mapreduce运行在yarn框架上。
2)、 配置yarn-site.xml
添加属性配置:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop6</value>(设备名)
</property>
指定了Resourcemanager运行在哪个节点上
3)、 启动Resourcemanager
在目录:/opt/modules/hadoop/sbin
[root@hadoop6 sbin]#yarn-daemon.sh start resourcemanager
4)、 启动nodemanager
[root@hadoop6 sbin]#yarn-daemon.sh start nodemanager
5)、查询是否成功
出现以下结果即为成功
image.png
6)、 YARN的Web页面
YARN的Web客户端端口号是8088,通过http://hadoop6:8088/可以查看
9、运行MapReduce Job
1)、 创建测试用的Input文件
前面有创建,如果没有创建,请参照前面重新创建input文件夹,以及wc.input这个测试文本
2)、 运行WordCount MapReduce Job
[root@hadoop6 hadoop]# yarn jar /opt/modules/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount /input/wc.input /output
3)、查看统计结果
[root@hadoop6 hadoop]# hdfs dfs -ls /output
[root@hadoop6 hadoop]# hdfs dfs -cat /output/part-r-00000
image.png
10、开启历史记录
在目录:/opt/modules/hadoop/sbin
[root@hadoop6 sbin]# mr-jobhistory-daemon.sh start historyserver
11、停止hadoop
在目录:/opt/modules/hadoop/sbin
[root@hadoop6 sbin]# hadoop-daemon.sh stop namenode
[root@hadoop6 sbin]# hadoop-daemon.sh stop datanode
[root@hadoop6 sbin]# yarn-daemon.sh stop resourcemanager
[root@hadoop6 sbin]# yarn-daemon.sh stop nodemanager
[root@hadoop6 sbin]# mr-jobhistory-daemon.sh stop historyserver
第四部分:完全分布式安装
完全分布式模式才是生产环境采用的模式,Hadoop运行在服务器集群上,生产环境一般都会做HA,以实现高可用。真正的分布式,由3个及以上的实体机或者虚拟机组件的机群。
1、服务器功能规划
image.png2、克隆虚拟机
在已经建好的虚拟机上的设置里面选择克隆,这里克隆两份就够了
3、配置网络
1)、修改网卡名称
[root@hadoop6 ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0
4、配置hosts
[root@hadoop6 ~]#vi /etc/hosts
在原来的ip和设备名下面追加
192.168.159.135 hadoop6
192.168.159.135 hadoop7
192.168.159.135 hadoop8
5、配置Windows上的hosts
追加新克隆的主机的ip和设备名
6、安装hadoop
在目录:/opt/modules创建app目录
7、配置hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路径:
配置之前确认一下jdk是否安好了
[root@hadoop6 ~]#echo ${JAVA_HOME}
结果为:/opt/modules/jdk1.8
开始修改
export JAVA_HOME="/opt/modules/jdk1.8"
8、配置core-site.xml
目录:/opt/modules/hadoop/etc/hadoop
[root@hadoop6 hadoop]#vi core-site.xml
增加属性配置:
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-senior01.chybinmy.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/app/hadoop-2.5.0/data/tmp</value>
</property>
9、配置hdfs-site.xml
目录:/opt/modules/hadoop/etc/hadoop
[root@hadoop6 hadoop]#vi hdfs-site.xml
添加属性配置:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop6:50090</value>(当前设备名)
</property>
10、配置slaves
slaves文件是指定HDFS上有哪些DataNode节点,将需要部署的虚拟机的ip以及设备名添加上去,删掉第一行的hostname
内容为:
192.168.159.135 hadoop6
192.168.159.135 hadoop7
192.168.159.135 hadoop8
11、修改yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop05</value>(添加第二台主机的名字)
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
12、修改mapred-site.xml
添加属性
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop03:10020</value>(括号里的内容不需要,这里是主机名)
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop03:19888</value>(括号里的内容不需要,这里是主机名)
</property>
13、设置SSH无密码登录
首先下载安装ssh
yum -y install openssh-server openssh-clients
1)在hadoop3上生成公钥
ssh-keygen -t rsa
一路回车,使用默认操作
2)指定某一个虚拟机信任本虚拟机,需要添加信任的都需要输入一遍
ssh-copy-id hadoop3
14、拷贝hadoop
1)、在另外两台主机上/opt/modules目录下新建app文件夹
2)、删除/opt/modules/app/hadoop/share路径下的doc文件夹
3)、将hadoop文件夹拷贝到另外两个主机的app文件夹下
[root@hadoop3 app]#scp -r ./hadoop hadoop4:/opt/modules/app/
补充:在进行下一步之前确认一下/etc/profile文件有没有以下两行内容。没有就追加或者修改,然后使用source /etc/profile使之生效
export HADOOP_HOME="/opt/modules/app/hadoop"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
初始化整个文件系统:
[root@hadoop3 app]#hdfs namenode -format
15、格式化NameNode
16、启动集群
1、 启动HDFS,在任意一台机器上(namenode,datanode,secondarynamenode)
[root@hadoop3 sbin]# start-dfs.sh
然后用jps命令查看一下是否开启
image.png
2、 启动YARN
start-yarn.sh
在第二台机器上启动(resourcemanager,nodemanager)
[root@hadoop4 app]#yarn-daemon.sh start resourcemanager
出现以下图片
image.png
3、启动日志服务器
在第一台机器上
[root@hadoop5 app]# mr-jobhistory-daemon.sh start historyserver
4、运行mapreduce
1)、创建一个wc.input,随便写一些内容
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
2)、创建一个input文件夹
hdfs dfs -mkdir /input
3)、上传wc.input到input文件夹下面
hdfs dfs -put wc.input /input
4)、运行mapreduce
[root@hadoop3 data]# yarn jar /opt/modules/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar wordcount /input /output
5)、 查看结果
结果在output文件夹里面
image.png
17、停止集群
1、停止namenode,datanode,secondarynamenode
stop-dfs.sh
2、在第二台主机停止ResourceManager:
stop resourcemanager
3、在第一台的主机:
[root@hadoop3 data]# mr-jobhistory-daemon.sh stop historyserver
网友评论