Hadoop部署(v1与v2)
注:通过虚拟机,我对v1,v2都进行了部署,以此比较两个版本的异同
集群部署
Hadoop安装分为三种不同模式:
本地模式:hadoop在运行时,不使用hdfs,而是使用linux操作系统的文件系统.(默认hadoop就是本地模式)
伪分布模式:在一个节点上运行hadoop(指的是hadoop的各个进程都是在我们的一个节点上都是开启的).hadoop的"运行机制"和集群模式相似,
集群模式:在生产中真正使用的,hadoop的各个进程运行在集群的很多节点上。
我们这里模拟的是集群开发环境的部署。
因为是在笔记本上做的实验,所以这里我选择三台机器安装,下面是各个节点的分配:
192.168.1.10 NAMENODE
角色:NameNode,JobTracker,TaskTracker,DataNode
192.168.1.11 DATANODE1
角色:SecondaryNameNode,TaskTracker,DataNode
192.168.1.12 DATANODE2
角色:TaskTracker,DataNode
NameNode和JobTracker在实际的生产中各自是一台机器,因为NameNode在运行时时需要消耗大量内存的,JobTracker接收用户的请求,对用户cpu要求稍微高一点,作为和我们用户直接做接口的这种进程,最好独立,保证资源的充分.
准备软件
虚拟机VMware
Linux Centos6.5 32位
jdk-7u7-linux-i586tar.gz
hadoop-1.1.2.tar.gz
配置静态ip地址
内网ip:我们的各个节点通过一台交换机或者一个路由在一起的.
外网:虽然两台机器是在一起的,但是他们走的外网网络的话,它是从你的内网走出去到了外网,在进入到你的内网,再到另一台机器.
外网配置后特别慢,内网相对比较快.
DHCP动态的不利于我们去指定一个节点,静态管理还是比较方便的.
(1)使用vi编辑文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
(2)执行service network restart重启网卡设置
3)执行命令ifconfig查看配置结果是否正确
设置hostname
主机名:ip的一个代称,在当前网络环境中是有效的
(1)使用vi编辑/etc/sysconfig/network

把HOSTNAME的值改为NAMENODE,保存退出.(重启之后永久生效)
(2)执行hostname NAMENODE,在当前环境中立即生效
(3)执行命令hostname查看设置结果
绑定ip与hostname
编辑文件/etc/hosts,增加ip与主机名的映射信息
192.168.1.10 NAMENODE
192.168.1.11 DATANODE1
192.168.1.12 DATANODE2

关闭防火墙
用来拦截外部请求的,对于某个ip来访问某个端口等待,防火墙都会做拦截,关闭防火墙的目的,就是为了让我们的程序能够更容易的安装,部署.
工作中hadoop集群内网的防火墙也是可以关闭的.内部的Hadoop集群不对外进行通信
(1)执行命令service iptables stop关闭防火墙
(2)执行命令service iptables status查看防火墙是否正在运行.
关闭防火墙的自动运行:
执行命令chkconfig iptables off
部署SSH(secure shell)免密码登陆
hadoop主节点启动的时候,会在我们的从节点启动进程,通过ssh 登陆之后,在他上面执行脚本之后登陆的
ssh是一个加密的通信方式,这种加密是非对称加密,指的是我们有公钥和密钥这两个东西
(1)执行命令 ssh-keygen -t rsa 产生公钥私钥文件,产生的文件位于~/.ssh目录下
在执行之前,先cd到~下查看是否有.ssh,如果没有,通过命令mkdir ~/.ssh创建文件夹,通过ls-a查看是否创建成功
(2)执行命令ssh-copy-id -i DATANODE1复制公钥文件到对方DATANODE1中authorized_keys中去.
同理,在这一步之前,DATANODE1应该创建好.ssh文件夹
这一步会先让你输入DATANODE1的密码,然后再让你设置ssh的登录密码,直接enter键默认为无密码,并会让你再次输入。
(3)ssh DATANODE1,就可以实现真正的密码登录了
DATANODE2同理。
只需要实现主节点到从节点的免密码登陆即可,不必要实现从节点到从节点的免密码登录.(因为我们的hadoop是主节点去启动或关闭从节点的进程,去调用脚本,我们的从节点不会调用主节点的脚本,所以ssh只需要主节点到从节点。
想要退出返回到主节点,输入exit 或者logout都可以。
安装jdk
将文件jdk-7u7-linux-i586.tar.gz上传到NAMENODE上
执行mkdir /usr/local/java创建java文件夹
然后将下载的压缩包拷贝到java文件夹中:
进入jdk源码包所在目录
cp jdk-7u7-linux-i586.tar.gz /usr/local/java
然后进入java目录:
cd /usr/local/java
解压压缩包:
tar -zxvf jdk-7u7-linux-i586.tar.gz
可以把压缩包删除:
rm -f jdk-7u7-linux-i586.tar.gz
vim /etc/profile
进入插入状态
在文本的最后一行粘贴如下:
注意JAVA_HOME=/usr/local/java/jdk1.7.0_07 就是你自己的目录
#java environment export JAVA_HOME=/usr/local/java/jdk1.7.0_07 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
让刚刚设置的环境变量生效:
键入source /etc/profile
检查是否配置成功
键入:
java -version
javac
以上步骤分别在DATANODE1,DATANODE2节点上执行配置.
部署hadoop
(1)在hadoop1上执行命令 /mnt/software/hadoop-1.1.2.tar.gz ~ 复制hadoop压缩包到home目录.
(2)在hadoop1上执行命令tar -zxvf ~/hadoop-1.1.2.tar.gz 进行解压缩
mv hadoop-1.1.2 hadoop
(3)在hadoop1上执行命令vi /etc/profile 设置环境变量,增加了内容如下:
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$PATH
保存退出
执行source /etc/profile
为了防止在启动的过程程序抛警告"Warning: $HADOOP_HOME is deprecated",加入如下代码:
export HADOOP_HOME_WARN_SUPPRESS=1
(4)编辑配置文件
<1>conf/hadoop-env.sh
修改第9行内容 export JAVA_HOME=/usr/local/jdk

<2>conf/core-site.xml
<property> <name>fs.default.name</name> <value>hdfs://namenode:9000</value> <description>change your own hostname</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property>
<3>conf/hdfs-site.xml
<configuration>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>dfs.datanode.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>dfs.datanode.ipc.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:0</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
<4>conf/mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://NAMENODE:8000</value>
</property>
<property>
<name>mapred.job.tracker.http.address</name>
<value>0.0.0.0:50030</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>0.0.0.0:0</value>
</property>
</configuration>
<5>修改masters文件(保存SecondaryNameNode)
DATANODE1
<6>修改slaves文件(指定从节点的位置)
DATANODE2
(5)在NAMENODE上将配置好的/usr/local/hadoop分别复制到其他节点
scp -r hadoop* DATANODE1:/usr/local/
scp -r hadoop* DATANODE2:/usr/local/
scp /etc/profile DATANODE1:/etc/
scp /etc/profile DATANODE:/etc/
分别在DATANODE1,DATANODE2上执行source /etc/profile
(6) 在NAMENODE节点执行hadoop namenode -format 进行格式化
(7)在NAMENODE节点上执行命令start-all.sh 启动集群
(8)检查是否启动成功:执行jps命令 浏览器访问NAMENODE:50070来访问hdfs
NAMENODE:50030来访问jobtracker
hadoop/logs 中查看启动日志 .out是临时文件
查看端口:netstat -ant | grep 9000
查看对应的进程号:ps -ef | grep 9000
杀死进程 kill -9 9000
关闭集群的方式:stop-all.sh
以上的配置将NameNode和JobTracker都部署在一台机器上了,但是我们在生产中是分别将NameNode和JobTracker分别部署在不同的机器上的,所以我们做如下修改:
我们假设NameNode在hadoop1上,JobTracker在DATANODE1上
(1)NameNode所在节点是通过core-site.xml中的fs.default.name的值体现出来的.
这里不需要修改,还是hdfs://NAMENODE:9000
(2)JobTracker所在节点是通过mapred-site.xml的mapred.job.tracker的值体现的
将值修改为hdfs://DATANODE1:8000
(3)重新启动集群:
启动时不要使用start-all.sh,而应该使用hadoop-daemon.sh start ***命令启动:
在NAMENODE上执行命令hadoop-daemon.sh start namenode
在DATANODE1上执行命令hadoop-daemon.sh start jobtracker
在DATANODE1上执行命令hadoop-daemon.sh start secondarynamenode
在NAMENODE上执行命令hadoop-daemons.sh start datanode
在NAMENNODE上执行命令hadoop-daemons.sh start tasktracker
关闭集群:
按照启动相反的操作,将start改为stop即可.



补充:V2的安装与V1没有太多区别,在这里补充一下hadoopv2的设置过程;
1./home/hadoop/hadoop-2.7.3/etc/hadoop目录下的core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://NAMENODE:9000</value>
</property></configuration>
2.配置/home/hadoop/hadoop-2.7.3/etc/hadoop目录下的hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>DATANODE1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
3.配置/home/hadoop/hadoop-2.7.3/etc/hadoop目录下的mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master.hadoop:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master.hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master.hadoop:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://master.hadoop:9001</value>
</property>
</configuration>
4.配置/home/hadoop/hadoop-2.7.0/etc/hadoop目录下的yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>127.0.0.1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>127.0.0.1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>127.0.0.1:8031</value>
</property>
</configuration>
5.配置/home/hadoop/etc/hadoop目录下hadoop-env.sh、yarn-env.sh的JAVA_HOME
取消注释,设置为export JAVA_HOME=/home/java/jdk1.7.0_79
6.配置/home/hadoop/etc/hadoop目录下的slaves,删除默认的localhost,增加2个slave节点:
DATANODE1
DATANODE2
7.在V2版本里,还需要执行命令vi /etc/profile 设置环境变量,主要是将bin改成sbin,不然的话就会提示no bash。
export HADOOP_HOME_WARN_SUPPRESS=1 export HADOOP_HOME=/usr/local/hadoop export PATH=.:$HADOOP_HOME/sbin:$PATH
运行结果:


参考博客:
https://www.cnblogs.com/xuwujing/p/7856061.html
https://www.cnblogs.com/xiaolong1032/category/667553.html

浙公网安备 33010602011771号