Hadoop学习(3)-- 安装1.x版本
Hadoop有三种安装模式,分别为单机模式、伪分布式模式和完全分布式模式(集群模式)。本文安装版本是hadoop-1.1.2,hadoop-2.x版本安装请参考:http://www.cnblogs.com/hanganglin/articles/4254931.html。
单机模式是Hadoop的默认模式,单机模式只有一个节点,不使用HDFS,也不加载任何Hadoop的守护进程,该模式主要用户开发调试MapReduce应用程序逻辑。
伪分布式hadoop是一个只有一个节点的集群,这个节点既是mater,也是slave;既是NameNode,也是DataNode;既是JobTracker,也是TaskTracker。
本实例配置环境:① 宿主机win7;② vmware虚拟机:CentOS;③ vmware网络连接方式:host-only;④hadoop版本:1.1.2。
1、 设置静态IP地址
1) 设置宿主机本地网络共享:宿主机->本地连接->右键->属性->共享,将“允许其他网络用户通过此计算机的 Internet 连接来连接”前的复选框打钩,并选择家庭网络连接为“VMware Network Adapter VMnet1”(host-only连接方式使用此网卡),点击确定,VMware Network Adapter VMnet1网络IP地址会自动修改为192.168.xx.1(本实例192.168.137.1),子网掩码为255.255.255.0。
2) 修改虚拟机linux的IP地址配置:执行命令vi /etc/sysconfig/network-scripts/ifcfg-eth0,修改网卡ip地址获得方式BOOTPROTO、IP地址IPADDR、网卡对应网络地址NETWORK,本实例修改如下所示:
DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
IPADDR=192.168.137.100 #如果设置网卡获得ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址
NETMASK=255.255.255.0 #网卡对应的网络掩码
NETWORK=192.168.137.1 #网卡对应的网络地址
GATEWAY=192.168.137.1 #网关地址
ONBOOT=yes #系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备
HWADDR=00:0c:29:c8:36:68 #对应的网卡物理地址
TYPE=Ethernet
#DNS1=8.8.8.8 #根据需要配置DNS 这两个为谷歌提供的免费全球DNS
#DNS2=8.8.4.4
3) 重新启动网络配置:执行命令service network restart。
4) 验证静态IP配置是否成功:① 执行命令ifconfig;② 在虚拟机linux中ping VMnet1网卡地址,如命令:ping 192.168.137.1;③ 在宿主机中ping虚拟机IP地址,如命令:ping 192.168.137.100。
2、修改主机名
默认主机名为localhost.localdomain,为了测试方便,本实例将主机名修改为hadoop,执行命令:vi /etc/sysconfig/network,将HOSTNAME修改为hadoop然后保存退出。查看主机名命令为hostname,注意使用hostname hadoop命令只能将当前会话主机名修改为hadoop,重启后失效,因此建议修改配置文件。
3、绑定主机名和IP地址
修改主机名后,执行命令:ping hadoop,系统会提示找不到主机,为了方便之后的配置可直接使用主机名代替ip地址,我们需要将主机hadoop和对应ip地址进行绑定,执行命令:vi /etc/hosts,增加一行:192.168.137.100 hadoop,前面为linux的ip地址,后面为主机名。
注意:此处必须配置内网IP地址,特别是网络云主机。
4、关闭防火墙及防火墙的自动启动
hadoop集群很多地方需要使用linux的不同端口,为了方便学习,建议学习hadoop时将防火墙关闭。
1) 关闭当前防火墙进程命令:service iptables stop,验证是否关闭命令:service iptables status。
2) 查看防火墙是否自动重启,执行命令:chkconfig --list | grep iptables,若存在一个on状态,则防火墙会在下次系统启动时启动,我们需要关闭自动启动,执行命令:chkconfig iptables off,验证命令:chkconfig --list | grep iptables。
5、配置SSH免密码登陆
1) 生成ssh公钥,执行命令:ssh-keygen -t rsa,全部默认回车,会在当前用户所在目录下生成.ssh文件夹,地址:~/.ssh
2) 将生成的公钥放至公钥存放处authorized_keys(SSH会自动读取文件authorized_keys),执行命令:cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys或ssh-copy-id -i /root/.ssh/id_rsa.pub localhost
验证:ssh localhost
6、安装JDK
1) 利用文件上传工具WinSCP将JDK安装文件(本例jdk-6u27-linux-x64.bin)上传至虚拟机Linux路径/usr/local/目录下
2) 授予bin文件执行权限,执行命令:chmod u+x jdk-6u27-linux-x64.bin,然后执行解压命令:./jdk-6u27-linux-x64.bin
3) 重命名解压后文件夹,执行命令:mv jdk1.6.0_27 jdk
4) 配置jdk环境变量,命令:vi /etc/profile, 在空白处增加两行:export JAVA_HOME=/usr/local/jdk 和 export PATH=.:$JAVA_HOME/bin:$PATH
5) 使配置文件立即生效,命令:source /etc/profile
验证:java -version
7、安装hadoop
1) 利用文件上传工具WinSCP将hadoop安装文件(本例hadoop-1.1.2.tar.gz)上传至虚拟机Linux路径/usr/local/目录下
2) 解压缩hadoop压缩包,执行命令:tar -zxvf hadoop-1.1.2.tar.gz
3) 重命名文件夹名称,命令:mv hadoop-1.1.2 hadoop
4) 修改环境变量,执行命令:vi /etc/profile,在PATH行前空白处增加一行: export HADOOP_HOME=/usr/local/hadoop,并修改PATH为:
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH。
5) 使配置文件立即生效,命令:source /etc/profile
6) 修改hadoop的4个配置文件,位于$HADOOP_HOME/conf目录下,分别是hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml,详细修改如下所示:
① hadoop-env.sh
export JAVA_HOME=/usr/local/jdk/
② core-site.xml,注意这里第4行hadoop应改成相应主机名,即linux操作系统名
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
③ hdfs-site.xml,注意dfs.replication为副本数,默认为3,这里配置成1
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
④ mapred-site/xml,同core-xite.xml,注意这里第4行hadoop应该改成相应主机名,即linux操作系统名
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop:9001</value>
</property>
</configuration>
7) 对hadoop进行格式化,执行命令:hadoop namenode -format
8) 启动hadoop,执行命令:start-all.sh
验证:
① 执行JDK提供查看进程的命令:JPS,查看进程DataNode、SecondaryNameNode、NameNode、JobTracker和TaskTracker是否启动;
② 在虚拟机Linux的浏览器中输入:a、http://hadoop:50070,查看NameNode是否启动正常;b、http://hadoop:50030,查看MapReduce是否启动正常;
③ 在宿主机浏览器中验证,输入http://192.168.137.100:50070或者http://hadoop:50070(修改主机C:\Windows\System32\drivers\etc\hosts文件,增加配置192.168.137.100 hadoop);
常见错误解决办法:
问题一:多次格式化hadoop导致报错,如何解决?
解决:删除/usr/local/hadoop/tmp文件夹,并重新格式化
问题二:启动hadoop报警告Waring:$HADOOP_HOME is deprecated.,如何解决?
解决:vi /etc/profile ,添加一行 export HADOOP_HOME_WARN_SUPPRESS=1,并重启配置:source /etc/profile
我们在实际中使用hadoop,都是使用完全分布模式,该模式可以发挥集群的优势,真正体现hadoop强大的魅力。
在本集群实例中,主节点为一台,运行NameNode、JobTracker和SecondaryNameNode,从节点为两台,分别运行DataNode和TaskTracker,主机名和IP分别如下:①主节点-hadoop0,IP地址192.168.137.101;②从节点1-hadoop1,IP地址192.168.137.102;③从节点2-hadoop2,IP地址192.168.137.103。
1、基本环境配置
所有节点都需要配置基本环境,包括设置静态IP地址、修改主机名、关闭防火墙及防火墙的自动启动,详细可参考伪分布模式对应安装步骤。
2、批量绑定主机名与IP地址
1) 绑定配置所有节点的主机名和IP地址,选择某个节点并执行命令:vi /etc/hosts,并填入内容:
192.168.137.101 hadoop0
192.168.137.102 hadoop1
192.168.137.103 hadoop2
2) 将该节点的配置文件/etc/hosts分发给其他节点,在该节点上批量执行命令:scp /etc/hosts root@hadoop1:/etc/,将hadoop1分别替换成对应的主机名
3、批量配置SSH免密码登陆
1) 生成ssh密钥,在所有节点上执行命令:ssh-keygen -t rsa,全部默认回车,会在当前用户所在目录下生成.ssh文件夹,地址:~/.ssh
2) 将生成的公钥存放至文件authorized_keys中,选择某个节点(假设主节点hadoop0)并执行命令:cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
3) 其他节点分别将自己的公钥发送给hadoop0,分别执行命令:ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop0
4) 主节点hadoop0将包含所有节点公钥信息的文件authorized_keys分发给其他节点,在hadoop0上批量执行命令:scp /root/.ssh/authorized_keys root@hadoop1:/root/.ssh/,将hadoop1分别替换成对应的主机名,建议通过脚本自动执行。
SSH免密码登陆是hadoop集群配置中很关键的一个步骤,节点进程之间的沟通都通过SSH协议进行,必须配置免密码登陆。SSH是基于非对称安全加密的策略,每个节点都有一对公钥和私钥,通过公钥(或私钥)加密数据,只能通过对应的私钥(或公钥)来进行解密。假设客户端A想通过SSH免密码登陆到服务器B,A必须事先将自身的公钥A保存在B中,然后A会向B发送连接请求,同时发送公钥A。B接收到请求后,在本服务器上寻找A事先保存的公钥并与发送过来的公钥A进行比较。如果两个密钥一致,B就用公钥A加密“质询”信息并发送给A,A接收到加密后的“质询”信息并用私钥A进行解密,将解密后的“质询”再次发送给B,B通过接收到的“质询”与原“质询”比较,若相同,则建立与A的SSH连接。在整个连接建立过程中,不传输密码,安全性相当高。
4、批量安装jdk和hadoop
1) 在主节点hadoop0上安装jdk和hadoop,详细安装步骤见伪分布式对应操作步骤。hadoop安装完毕后,检查并删除logs和tmp文件夹下的所有文件;
2) 将hadoop0中的jdk和hadoop文件夹分别复制到其他从节点,在hadoop0节点上批量执行命令:scp -r /usr/local/jdk root@hadoop1:/usr/local/和scp -r /usr/local/hadoop root@hadoop1:/usr/local/,将hadoop1分别替换成对应的主机名;
3) 将hadoop0中的环境变量配置文件复制到其他从节点,在hadoop0中批量执行命令:scp /etc/profile root@hadoop1:/etc/,将hadoop1分别替换成对应的主机名;
4) 所有从节点分别执行命令:source /etc/profile,使环境变量配置文件立即生效;
5) 在主节点hadoop0中的配置文件hadoop/conf/slaves中配置从节点hadoop1和hadoop2,各占一行。配置文件hadoop/conf/masters用于指定SecondartNamenode的执行节点,根据实际需要进行配置。
6) 主节点hadoop0格式化,执行命令:hadoop namenode -format
7) 主节点hadoop0启动hadoop集群,执行命令:start-all.sh,会分别启动hadoop0的namenode、secondarynamenode、jobtracker进程,和hadoop1、hadoop2上的datanode、tasktracker进程
注意事项:
① 对于配置文件core-site.xml和mapred-site.xml在所有节点中都是相同的内容;
② 集群批量配置命令,建议通过shell等脚本自动执行;
③ 单独指定namenode与jobtracker,可以分别在core-site.xml和mapred-site.xml中指定节点,然后到节点中分别启动对应的进程;
常见错误解决办法:
问题一:启动hadoop集群后,某些从节点的DataNode进程无法启动?
解决:删除从节点hadoop.tmp.dir指定的路径(通常为/hadoop/tmp),然后主节点重新启动。
1、配置新节点的环境,参考完全分布模式的基本环境配置步骤;
2、主节点配置文件/etc/hosts添加新节点的主机和IP配置,并将该配置文件通过scp命令重新分发给所有的从节点;
3、在新节点中通过ssh-keygen命令生成ssh密钥,并通过ssh-copy-id命令将公钥发送至主节点。然后在主节点中,通过scp命令将authorized_keys文件分发给所有的从节点;
4、在主节点中,通过scp命令将jdk、hadoop和/etc/profile配置文件拷贝到所有新节点,然后分别在新节点中删除hadoop目录下的logs和tmp文件夹内容;
5、在主节点中的配置文件hadoop/conf/slaves中添加新节点的hostname;
6、新节点单独启动datanode和tasktracker进程,执行命令:hadoop-daemon.sh start datanode和hadoop-daemon.sh start tasktracker;
7、主节点刷新从节点信息,执行命令:hadoop dfsadmin -refreshNodes;
8、均衡整个集群的block存储,在新节点上执行(如果增加多个节点,只需在其中一个新节点执行即可)命令:./start-balancer.sh;
验证:通过http://hadoop0:50070查看从节点数是否增加。
在分布式文件系统启动的时候,会进入安全模式,在该模式下,HDFS中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。安全模式启动后会在一定时间内自动退出,可通过http://hadoop0:50070查看当前分布式系统是否处于安全模式和安全模式退出还需要多少时间,当然也可以通过命令强制退出安全模式。
查看是否启动安全模式:hadoop dfsadmin -safemode get
使系统进入安全模式:hadoop dfsadmin -safemode enter
使系统退出安全模式:hadoop dfsadmin -safemode leave
Hadoop学习(3)-- 安装1.x版本的更多相关文章
- hadoop学习;安装jdk,workstation虚拟机v2v迁移;虚拟机之间和跨物理机之间ping网络通信;virtualbox的centos中关闭防火墙和检查服务启动
JDK 在Ubuntu下的安装 与 环境变量的配置 前期准备工作: 找到 JDK 和 配置TXT文件 并拷贝到桌面下 不是目录 而是文件拷贝到桌面下 以下的命令部分就直接复制粘贴就能够了 1.配 ...
- Hadoop学习-hdfs安装及其一些操作
hdfs:分布式文件系统 有目录结构,顶层目录是: /,存的是文件,把文件存入hdfs后,会把这个文件进行切块并且进行备份,切块大小和备份的数量有客户决定. 存文件的叫datanode,记录文件的切 ...
- Hadoop学习笔记——安装Hadoop
sudo mv /home/common/下载/hadoop-2.7.2.tar.gz /usr/local sudo tar -xzvf hadoop-2.7.2.tar.gz sudo mv ha ...
- 黑马MySQL数据库学习day01 安装多个版本MySQL mysqld.exe工具
- hadoop学习之hadoop完全分布式集群安装
注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...
- 【Hadoop学习之三】Hadoop全分布式安装
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop3.1.1 全分布式就是集群,注意配置主机名. ...
- hadoop学习通过虚拟机安装hadoop完全分布式集群
要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个had ...
- Hadoop学习笔记(1)-Hadoop在Ubuntu的安装和使用
由于小编在本学期有一门课程需要学习hadoop,需要在ubuntu的linux系统下搭建Hadoop环境,在这个过程中遇到一些问题,写下这篇博客来记录这个过程,并把分享给大家. Hadoop的安装方式 ...
- java大数据最全课程学习笔记(1)--Hadoop简介和安装及伪分布式
Hadoop简介和安装及伪分布式 大数据概念 大数据概论 大数据(Big Data): 指无法在一定时间范围内用常规软件工具进行捕捉,管理和处理的数据集合,是需要新处理模式才能具有更强的决策力,洞察发 ...
随机推荐
- 深入说明HDR
http://wenku.baidu.com/link?url=xBdq0VRVi2t0x9uis3XfU_0mKf2eK0e6y_1hiSo7IWSWyUE8yAwaTJ60ZlxTzQf91VPf ...
- [ZZ] HDR the bungie way
http://blog.csdn.net/toughbro/article/details/6755394 bufferencoding游戏float算法 bungie 06年,gamefest上的p ...
- Mininet实验 OpenFlow1.3协议基于Mininet部署与验证
参照:OpenFlow1.3协议基于Mininet部署与验证 安装过程,参考原文. 实验 使用ifconfig查看本机IP地址:192.168.1.101 进入OpenDayLight界面,cd到bi ...
- Ubuntu kill命令用法详解
转自:Ubuntu kill命令用法详解 1. kill 作用:根据进程号杀死进程 用法: kill [信号代码] 进程ID root@fcola:/# ps -ef | grep sen ...
- PHP抓取采集类snoopy介绍
PHP抓取采集类snoopy介绍 一个PHP的抓取方案 在 2011年07月04日 那天写的 已经有 10270 次阅读了 感谢 参考或原文 服务器君一共花费了14.288 ms进行了2次 ...
- PHP IDE phpstorm 常用快捷键
PHP IDE phpstorm 常用快捷键 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了PHP IDE phpstorm 常用快捷键,本文分别列出了mac系统和Win ...
- session配置理解
session.cache_limiter 指定会话页面所使用的缓冲控制方法,默认为nocache.session.cache_expire 以分钟数指定缓冲的会话页面的存活期,默认为180.此设定对 ...
- 7添加一个“X”到HTML:转到XHTML
XHTML中的X代表extensible,是以XML为基础的另一种说法.XML表示可扩展的标记语言. XML是一种可以用来开发新的标记语言的语言,而HTML只是一门标记语言. HTML转化为XHTML ...
- 字典型转换为JSON数据
一)将NSDictionary转换成为NSData类型 NSDictionary *tempDict=[[NSDictionary alloc] initWithObjectsAndKeys:@&qu ...
- cordova插件iOS平台实战开发注意点
cordova插件是其设计理念的精髓部分,创建并使用自定义插件也是一件比较容易的事.但在这个过程中也容易进入一些误区或者有一些错误的理解,下面从笔者实际开发中遇到的问题出发,对其中的一些注意点和重要概 ...