设为首页 收藏本站
查看: 911|回复: 0

[经验分享] hadoop学习笔记-centos安装单节点及多节点集成(完整版)

[复制链接]

尚未签到

发表于 2016-5-13 09:26:22 | 显示全部楼层 |阅读模式
hadoop学习笔记-centos安装单节点及多节点集成(初稿,无图,无连接)

完整版请移步到:点击打开链接

  后续将会将软件下载地址,以及截图更新上来,由于此文档是在公司写的,所以只能用文字描述出操作的过程,请谅解。

  
  前言:这一系列的文章好久没有写了,由于工作最近比较繁忙,于是就拖延了一段时间。于是上周日本人计划搭建一个比较真实的环境,由于之前一直是在windows下面模拟的,感觉不是很好,所以就用我那个只有4G的笔记本来跑跑几个虚拟机吧。

在安装之前需要以下几个软件
  1) centos安装包,这个是必须的。我用的是centos6.3,是当前最新的版本。下载地址是:
  2) virtualbox安装包,由于这个相对vm应该比较小巧,功能也比较简单,所以用于练习是比较好的选择。下载地址是:
  3) xshell以及xftp安装包,这个是linux在windows端的工具软件,可以通过ssh来远程连接或者其他协议来连接linux服务器,并可以进行管理,类似于在linux的终端,而xftp是可以通过文件拖拉方式来进行windows端和linux端的文件传输,非常方便,下载地址为:
  4) hadoop1.0.4的rpm的安装包,由于centos是类似red hat,所以可以下载hadoop1.0.4的rpm包。下载地址:
  以上软件均是在搭建之前必须下载好的。接下来便进入安装步骤。

Centos的安装:
  Centos的安装还是比较简单的,具体的步骤可以参考:
  本人也是参考这个来进行安装的。
  注意:centos在安装的时候,就已经替我们安装好了openjdk和ssh。本人建议不采用它自带的openjdk,下对它进行卸载,然后重新安装,操作步骤为:
  操作之前需要将用户切换到root用户,su root ,然后输入你在安装系统的时候设置的密码
  rpm -qa | grep java
  于是可能会出现下面内容(不同机器会出现不同内容)
  java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  执行下面操作:
  rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.115
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.7.b09.el5
  注意上面红色标记是相同的。
  最后在重新安装openjdk
  注意此时还是在root用户下
  yuminstall java-1.6.0-openjdk java-1.6.0-openjdk-devel
  执行这个命令,
  那么jdk将会安装在/usr/jvm/java下面了。
  设置环境变量:
  echo "exportJAVA_HOME=/usr/lib/jvm/java" >> /etc/profile
  然后再reboot一下。这是jdk就安装好了。最好是将$JAVA_HOME/bin加到$PATH下面,当然,这是可选的。

搭建单节点的hadoop:
  启动virtualbox里面刚刚安装好的刚刚安装好的centos,记住在网络连接那里设置连桥方式,不然虚拟机可能连不上网。
  到此你看看你是否已经安装好了xshell和xftp(windows)。通过xshell连接你虚拟机的centos,然后就可以不用在虚拟机里面操作了,从而避免总是在虚拟机和windows切换。
  打开xshell,点击new一个新的连接,这里输入虚拟机里面的centos的ip。点击connect,那么就会提示你是以哪个用户登录,输入你设置的centos用户名,勾选记住名字,后面会提示输入对应用户的密码,输入即可,同时也勾选上记住密码。点击确定。于是就连接上了虚拟机里面的centos了。就会看到虚拟机的终端。
  注意:以下操作均是在xshell操作。

第一步:在当前用户目录下新建一个opt目录
  (这是本人的习惯,不同人可以自己考虑)。这个目录将会放hadoop的安装目录。然后cd ~/opt,于是就进入了opt目录,此时点击xshell导航栏的window选项,里面会看到new file transport,点击这个,如果你已经安装了xftp那么就会通过xftp打开对应centos的opt目录,如果没有安装,将会提醒你安装xftp。这时你就可以将你下载在windows的hadoop 1.0.4的rpm安装文件拖拉到centos的opt目录下。上传完毕后,当你再次回到xshell的终端,在opt下面ls一下就会看到刚刚拖拉的hadoop安装文件了。

第二步:解压hadoop安装包。
  由于hadoop的安装包是rpm格式,所以tar不能解压。采用一下方式可以进行解压:
  rpm2cpioxxx.rpm | cpio –div
  xxx就是hadoop的安装包名。
  于是就会再opt目录下会出现三个文件夹,etc,usr,var
  Etc可以说是hadoop的配置模板,usr里面才是hadoop的主目录,里面主要的几个目录是:
  bin:里面有hadoop工具以及taskcontroller
  sbin:里面有hadoop的启动以及关闭等其他工具
  logs:则是存放当前节点hadoop运行日志。
  进入/opt/etc/hadoop目录
  里面有哦hadoop的所有配置文档
  主要是修改core-site.xml,mapred-site.xml,hadoop-env.sh,hdfs-site.xml
  修改内容可以参考官方的关于1.0.4的文档,我这里把相关内容粘贴出来:
  hadoop-env.sh
  加入export JAVA_HOME=/usr/lib/jvm/java
  core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
  hdfs-site.xml:

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
  mapred-site.xml:

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
  此时hadoop的基本配置已经完成。
  注意刚刚说了,etc目录只是一个配置模板,而并非hadoop的真正配置的地方
  我们需要将etc复制到usr里面去:
  cp -retc ./usr(执行这条命令的目录是在opt下面)
  这才算是真正的配置完了hadoop。

第三步:生成无密码登录ssh
  由于hadoop需要无密码登录作为datanode的节点,而由于部署单节点的时候,当前节点既是namenode又是datanode,所以此时需要生成无密码登录的ssh。方法如下:
  执行ssh-keygen –t rsa一路回车
  然后cd ~/.ssh
  ls一下会看到有两个文件,一个是id_rsa,另一个是id_rsa.pub
  id_rsa是密钥,id_rsa.pub是公钥。我们在执行
  cat id_rsa.pub >> authorized_keys
  chmod 600 authorized_keys
  测试是否设置成功:
  ssh localhost
  如果不需要输入密码即表示设置成功,否则失败。
  第四步:附加操作
  为了方便操作,最好是将hadoop的bin以及sbin放到PATH下面去,这样不要每次倒要进入对应目录下才能执行。
  所以需要执行:
  
  echo “PATH=/home/username/opt/usr/bin:/home/username/opt/usr/sbin:$PATH”>> /etc/profile
  注意:上面命令需要切换到root用户,并且username是你当前用户的名字。到此就剩下启动hadoop了。

启动hadoop:
  由于将hadoop的bin以及sbin路径放到了path中,所以可以再任何目录位置执行hadoop命令。
  注意:只执行之前到sbin目录下ls一下,会发现有一部分文件没有执行的权限,那么就执行一个chmod 777 *便可以了。
  第一步:格式化namenode
  hadoop namenode format
  此时会初始化好hadoop的文件系统。
  执行完成之后会发现根目录下会有一个tmp目录
  可以cd /tmp
  然后ls
  里面又会三个目录
  Data:这边是datanode的信息存放目录了
  Name:这是namenode的信息存放目录
  Secondraynamenod:这个可以理解为namenode的一个备份。
  这里就是hadoop的文件系统根目录了。你进去根本看不到你所谓的目录和文件,因为里面是hadoop的文件系统。不是我们操作系统的文件系统。所以只有通过hadoop才看看到目录和文件。
  第二步:正式启动hadoop
  忙活半天,这下终于可以启动hadoop,看看它的真面目了。
  让我们执行start-all.sh
  就会提示依次启动了namenode后面跟着它的日志存放目录
  Datanode ,secondraynamenode,jobtracker以及tasktracker。
  一般namenode会配备一个jobtracker用于处理用户的各种请求的。
  而datanode会配备一个tasktracker用户处理由jobtracker分发过来的任务。
  而secondraynamenode则是namenode的一个备份,会定时的将namenode的信息复制过来,当然,这个备份肯定不能解决namenode完全崩溃的时候。
  一般一个hadoop里面最重要的是namenode,它相当于一个hadoop的管家,没有他,那么就不会知道文件怎么存放以及存放在哪等等信息。所以一般在一个hadoop的集群中只有一个namenode。集群可以理解为是多个datanode的集群,统一由namenode来管理。这里扯了一点hadoop的相关知识。
  第三步:检查是否启动成功
  对于一个单节点,那么当前节点应该有增加五个java进程,分别是namenode,datanode,secondraynamenode,jobtracker,tasktracker。通过jps就可以查看。如果看到这几个进程,表示你安装hadoop成功了。那么你就可以开始你的hadoop之旅了。

搭建集群的hadoop
  前期配置:由于之前在virtualbox上面只是安装了一个centos,那么要集群,当然需要至少再安装一个centos。当然,这个centos的用户名最好喝另一个样,从而避免没必要的配置。
  到此,假设你已经安装并完成了jdk的安装及配置。并且假设,开始安装的centos是作为master,刚刚安装的作为slaver。
  注意:以下操作均是在xshell下操作的。

第一步:修改主机名及hosts文件
  1) master:这个作为namenode节点(同时可以作为datanode)。
  vi /etc/sysconfig/network
  将里面的HOSTNAME修改成master
  vi /etc/hosts
  加上master对应的ip(既当前的节点ip)
  例如:127.0.0.1 master
  同时加上slaver的ip
  2) slaver:这个是作为datanode节点,同上
  vi /etc/sysconfig/network
  将里面的HOSTNAME修改成master
  vi /etc/hosts
  加上master对应的ip(既当前的节点ip)
  例如:127.0.0.1 master
  同时加上slaver的ip
  完成以上操作之后将master和slaver节点均reboot一下。
  注意:以上操作均要在root下操作,不然会提示没有权限。

第二步:修改hadoop的配置文档
  由于已经在master节点已经搭建好了单节点的hadoop,那么我们就先修改master的hadoop配置信息。同单节点一样,修改core-set.xml.mapred-site.xml
  由于之前设置的都是master的ip或者是localhost,那么现在需要修改成在上一步配置好的hosts文件ip和hostname对应内容,我们将在这两个文件的ip都修改成master的hostname或者是ip。因为hostname在hosts文件中已经和ip有对应关系,所以用哪个都一样,不过本人建议用hostname,这样比较明了。
  然后修改在etc/hadoop的master和slavers文件。
  用vi打开可以看到里面只有localhost,这个hadoop的默认配置,表示当前节点既是master又是slaver,及既是namenode也是datanode。那么此处可以修改master文件将localhost修改成master的hostname(为什么可以,上面已经解释过)。修改slavers文件,将localhost修改成slaver的hostname也可以将master的hostname加进去(注意:一行只能有一个机器的hostname)。这样基本把master节点已经配置完毕。那么就要配置slaver节点了。
  Slaver节点的配置很简单,那就是copy。通过tar将opt目录打包:
  tar –cvfopt.zip ./opt
  将opt打好包之后,通过scp将这个文件复制到slaver机器上。(注意当前位置问当前用户的主目录)
  scp opt.zip slaver_hostname:./
  (注意:红色标记表示slaver节点的主机名,ip也可以)
  此时到slaver节点上,到用户主目录下,ls一下可以看到刚刚拷贝过来的opt.zip文件。
  同样,用tar进行解压
  tar –xvf opt.zip ./
  解压完毕之后,在当前目录下会看到一个opt文件夹。
  此时便安装好了hadoop了。

第三步:配置ssh无密码登录
  由于master节点需要通过ssh登录到slaver节点去启动datanode。那么需要在slaver节点实现ssh无密码登录。为了防治意外发生,我们最好还是使得slaver和master都能够相互的ssh无密码登录。
  我们在slaver节点执行ssh-keygen –t rsa,一路回车。
  在master节点先删除~/.ssh目录,rm –fr ~/.ssh。然后重新生成私钥和公钥。ssh-keygen–t rsa(至于为什么要重新生成,是由于我们的主机名已经改变了,所以要重新生成)。
  cd~/.ssh,里面就会有id_rsa,id_rsa.pub,这两个文件的意义上面已经介绍过了。下面就是要实现互通了。
  我们在master的~/.ssh下有一个id_rsa.pub文件。我们将这个文件copy到slaver的.ssh目录。通过scp来复制。scp id_rsa.pubslaver_hostname:./.ssh/tmp.pub,然后回到slaver节点的终端。在.ssh目录下ls一下,会看到多出一个tmp.pub文件。
  再次执行cat tmp.pub >>authorized_keys
  我们对这个文件赋予权限:chmod 600authorized_keys。这样从master到slaver就实现了无密码ssh登录了。
  我们在master端ssh slaver_hostname,如果成功了,那么就不会要求输入密码。
  至于slaver到master生成无密码登录,和上面一样,只是是从slaver复制id_rsa.pub到master。,注意,是用cat命令将公钥添加到authorized_keys文件,而不是新建一个authorized_keys。
  通过这些操作基本上已经完成了ssh无密码登录了。

第四步:启动hadoop
  在启动hadoop之前,由于之前在master上搭建过了一个单节点的hadoop,那么此时需要将原来的/tmp下的所有文件都删除掉。然后执行hadoop namenode –format。
  再启动之前,最好还是先要开放一下几个端口:
  注意:此操作需要切换到root用户

配置防火墙

Master端:
  /sbin/iptables -I INPUT -p tcp –dport 9000-j ACCEPT (这个是core-site.xml:
  里面配置的端口名)
  /sbin/iptables -I INPUT -p tcp –dport 9001-j ACCEPT (这个是mapred-site.xml:
  里面配置的端口名)
  /sbin/iptables -I INPUT -p tcp –dport 50030-j ACCEPT(JobTrackeradministrative web GUI JOBTRACKER的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50070-j ACCEPT(NameNode administrativeweb GUI NAMENODE的HTTP服务器和端口)

/sbin/iptables -I INPUT -p tcp –dport 50010 -j ACCEPT(DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求)
  /sbin/iptables -I INPUT -p tcp –dport 50020-j ACCEPT(DATANODE的RPC服务器地址和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50060-j ACCEPT(TASKTRACKER的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50075-j ACCEPT(DATANODE的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50090-j ACCEPT(辅助DATANODE的HTTP服务器和端口)
  保存这些配置信息:
  /etc/rc.d/init.d/iptables save
  重启防火墙:
  /etc/init.d/iptables restart
  查看防护墙信息:
  /etc/init.d/iptables status

Slaver端:
  /sbin/iptables -I INPUT -p tcp –dport 50030-j ACCEPT(JobTrackeradministrative web GUI JOBTRACKER的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50070-j ACCEPT(NameNode administrativeweb GUI NAMENODE的HTTP服务器和端口)

/sbin/iptables -I INPUT -p tcp –dport 50010 -j ACCEPT(DATANODE控制端口,主要用于DATANODE初始化时向NAMENODE提出注册和应答请求)
  /sbin/iptables -I INPUT -p tcp –dport 50020-j ACCEPT(DATANODE的RPC服务器地址和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50060-j ACCEPT(TASKTRACKER的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50075-j ACCEPT(DATANODE的HTTP服务器和端口)
  /sbin/iptables -I INPUT -p tcp –dport 50090-j ACCEPT(辅助DATANODE的HTTP服务器和端口)
  保存这些配置信息:
  /etc/rc.d/init.d/iptables save
  重启防火墙:
  /etc/init.d/iptables restart
  查看防护墙信息:
  /etc/init.d/iptables status

启动
  通过漫长的配置终于到了启动阶段了
  在master端,start-all.sh
  1) 如果你的master既是namenode也是datanode,那么通过jps查看会看到六条数据:
  分别是:
  Psid JPS
  Psid Namenode
  Psid Datanode
  Psid jobtracker
  Psidsecondraynamenode
  Psid tasktracker
  顺序可能不是这样,但是会有这几个数据,如果少了某个,说明没有启动成功,那么就到logs目录去查看日子吧,看看是出现了什么异常。
  2)如果master只是namenode,那么jps只有一四条数据,比上面少了tasktracker和datanode
  到slaver查看一下datanode是否启动成功:
  同样执行jps命令:正常情况会出现三条数据,JPS,datandoe,tasktracker。
  到此,hadoop的集群安装已经结束。

扩展hadoop的节点
  Hadoop是一个扩展性很高的分布式系统,那么当我们在我们hadoop的集群中添加一个新的datanode的时候,会不会需要重新安装一下hadoop呢?当然不要了。只需要将你新加的slaver的hostname加到master的slavers文件中,并且在master节点的hosts文件中加入新添加的slaver节点的pi和hostname对应信息。
  当然,新增加的slaver节点一定要配置好jdk环境。然后将master的hadoop复制一份过去就可以了。
  然后再master节点,关闭hadoop,stop-all.sh,然后再启动一下就可以了,start-all.sh.
  那么新加的slaver节点就会成功启动datanode和tasktracker了。

安装过程中会出现的某些异常
  当某个节点启动不成功的时候,要及时查看相应的logs下的日志。查看出现了什么异常。
  例如,master的namenode无法启动,可能是你没有重新格式化hadoop的文件系统,或者是namenode的端口被其他程序占用了。
  当slaver节点无法启动了,或者启动了一会,就停止了,可能是你的slaver无法访问master的namenode的节点,那么就可能是master没有关闭某个端口防火墙。例如问的配置,可能是9000端口被防火墙拦截了。那么就需要关闭这个端口的防火墙。
  在一中情况就是slaver节点的额datanode的id和namenode的id不一致,会导致datanode无法启动。所以到slaver节点的/tmp/data/current/,有个一VERSION文件,吧里面的id修改成namenode的id一样,然后重启就可以了。(namenode的id信息在/tmp/name/current/VERSION里面)
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-216339-1-1.html 上篇帖子: 中国科技大学 yum 源 下篇帖子: CentOS上Apache启动失败:CheckSpelling must be On or Off
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表