0.环境搭建准备实体机Win7 64位SSH Secure Shell ClientCentos 6.5 版本Hadoop 2.6.0 版本(编译后64位)OpenJdk1.7.0注:jdk的安装方法有三种,具体参照http://blog.csdn.net/u0114142...1.实验环境IP hostname role192.168.47.131 hadoop1 ActiveNameNode192.168.47.132 hadoop2 StandByNameNode192.168.47.133 hadoop3 DataNode1192.168.47.134 hadoop4 DataNode22.基本配置(注:下面的代码有的是用超级用户权限才能执行,所以遇到权限不够的时候,代码前面加上sudo,将自己当前用户变为超级用户的方法比较简单,就不多说了,也可以使用root权限,但比较费事。)2-1 网络配置物理地址hadoop1 00:0C:29:4E:45:5Bhadoop2 00:50:56:28:02:B1hadoop3 00:50:56:3F:4C:59hadoop4 00:50:56:3C:D1:7D1.查看虚拟机物理地址 设置—网络适配器—高级—Mac地址 如下图:PS:每次复制完虚拟机后,它们物理地址都相同,按下生成,即可生成新的物理地址,这样可以保证每一台虚拟机的物理地址不同,防止后面网络配置出错。 2.进行eth0配置vim /etc/sysconfig/network-scripts/ifcfg-eth0修改硬件地址并加入以下三行IPADDR=192.168.47.131NETMASK=255.255.255.0GATEWAY=192.168.47.2观察下面两项,改成如下设置ONBOOT=yesBOOTPROTO=none3.配置DNSvim /etc/resolv.conf输入nameserver 192.168.47.2 即网关(也可以参照其他资料上设置,最终连上网就行)保存后,输入service iptables stop考虑到后面节点的启动,也可以将防火墙设置为永久关闭,命令如下:chkconfig iptables off如果还是没连接,输入service network restart4.修改主机名编辑系统文件vim /etc/sysconfig/network在里面添加下面语句(根据实际修改)HOSTNAME=hadoop15.配置hosts文件vim /etc/hosts192.168.47.131 hadoop1192.168.47.132 hadoop2192.168.47.133 hadoop3192.168.47.134 hadoop4网络配置这里比较重点,网上有很多方法,个人觉得这种方法算是比较简单易行的,整体虚拟机网络设置为dhcp,即自动获取,这样可以保证虚拟机和外网互通,建议可以在windows和虚机间ping一下,检查是否联网,之后在几台虚拟机上设置静态Ip,可以ifconfig一下,检查是否设置成功。2-2 SSH免密码登录1.安装SSH:yum install openssh-clients如果输入yum install ssh可能会报错,报错如下ssh安装成功界面3.修改SSH配置文件vim /etc/ssh/sshd_config 修改成如下图(其实就是把前面 ‘#’ 删除即可) 重启SSH:service sshd restart进入当前用户下,生成秘钥cd /home/hadoopssh-keygen -t rsa一路回车设置.ssh目录和公秘钥权限sudo chmod 700 /home/hadoopsudo chmod 700 -R ~/.sshsudo chmod 600 ~/.ssh/authorized_keys配置本机免密码登录cat id_rsa.pub >> authorized_keys检验能否无密码ssh登录本机[hadoop@hadoop1 .ssh]$ssh hadoop1第一次登录需要回答yes,以后都不需要,可以直接登录。注意:这里生成密钥建议在几台虚拟机克隆过后网络配置、文件配置完成后施行,免密码登录这里直接影响最后格式化及节点启动是否成功,所以笔者在最后设置,检验完免密码登录后,启动格式化。这里我配置了activenamenode到其他几个datanode的免密码登录,即hadoop1到hadoop2、hadoop3、hadoop4的免密码登录,也可以设置双向的。hadoop1主机免密码登录hadoop2主机1.进入hadoop1的.ssh目录下cd ~/.ssh2.把authorized_keys复制到其他机器上,如节点hadoop2scp authorized_keys hadoop@hadoop2:/home/hadoop/.ssh/temp注意:若出现权限不足,可以root权限过去scp authorized_keys root@hadoop2:/home/hadoop/.ssh/temp3.进入hadoop2的.ssh目录,修改拥有者和用户组cd ~/.ssh/chown hadoop temp chgrp hadoop tempcat temp >> authorized_keys现在可以从hadoop1免密码登录hadoop2,在hadoop1主机上ssh hadoop2成功后可以删除临时文件temp(这个临时文件不需要新建,系统自己会建)rm temp从hadoop2主机免密码登录到hadoop11.在hadoop2上执行cd ~/.sshscp authorized_keys hadoop@name:/home/hadoop/.ssh/temp在hadoop1上执行cd ~/.ssh/cat temp >> .ssh/authorized_keys在hadoop2虚拟机上测试ssh hadoop1确定activenamenode可以免密码登录到任何一个datanode后,开始启动节点,注意最起码保证以上要求,在本例中应该最少设置hadoop1能免密码登录到hadoop2、hadoop3、hadoop4,否则会出现最后格式化的时候出现连接不上其他几台虚拟机的报错(原理嘛很简单,就是namenode会与其他几个datanode进行交互,如果设置了密码,也不可能人工输入密码,程序就会报错)。2-3 hadoop软件安装及文件配置2-3-1安装过程1.解压安装包将已下载好的hadoop-2.6.0.tar.gz 存放在hadoop用户目录下, 并解压至当前主用户目录下.tar -zxvf /home/hadoop-2.6.0.tar.gz -C /home/hadoop/ Apache Hadoop 各个版本的下载地址:http://archive.apache.org/dis...2.配置Hadoop的环境变量sudo vim /etc/profile在末尾加上以下配置,保存退出export HADOOP_HOME=/home/hadoop/hadoop-2.6.0export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin3.环境变量生效sudo source /etc/profile2-3-2 文件配置进入到目录hadoop-2.6.0里的/etc/hadoop/目录下进行文件的配置1.vim hadoop-env.sh增加java和hadoop环境变量及本地库export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.121.x86_64export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/nativeexport HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"2.修改core-site.xml文件<property><name>fs.defaultFS</name><value>hdfs://hadoop1:8020</value></property>3.修改yarn-site.xml文件 <name>yarn.resourcemanager.address</name> <value>hadoop1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop1:8030</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoop1:8088</value> </property><property><name>yarn.resourcemanager.webapp.https.address</name><value>hadoop1:8090</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>hadoop1:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>hadoop1:8033</value></property><property><name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value></property><property><name>yarn.scheduler.fair.allocation.file</name><value>${yarn.home.dir}/etc/hadoop/fairscheduler.xml</value></property><property><name>yarn.nodemanager.local-dirs</name><value>/home/hadoop/yarn/local</value></property><property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><description>Where to aggregate logs to.</description><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>30720</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>12</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>注意resourcemanager是哪台虚拟机,自己设定并修改配置。4.修改mapred-site.xml文件<name>mapreduce.framework.name</name><value>yarn</value></property><!-- jobhistory properties --><property><name>mapreduce.jobhistory.address</name><value>hadoop2:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop2:19888</value></property>主要设置standbynamenode节点相关端口号5.设置hdfs-site.xml文件,这是比较核心的文件,经常格式化不成功问题也出现在这里。<name>dfs.nameservices</name><value>hadoop-test</value></property><property><name>dfs.ha.namenodes.hadoop-test</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.hadoop-test.nn1</name><value>hadoop1:8020</value></property><property><name>dfs.namenode.rpc-address.hadoop-test.nn2</name><value>hadoop2:8020</value></property><property><name>dfs.namenode.http-address.hadoop-test.nn1</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.http-address.hadoop-test.nn2</name><value>hadoop2:50070</value></property><property><name>dfs.namenode.name.dir</name><value>file:///home/hadoop/hdfs/name</value></property><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop2:8485;hadoop3:8485;hadoop4:8485/hadoop-test</value></property><property><name>dfs.datanode.data.dir</name><value>file:///home/hadoop/hdfs/data</value></property><property><name>dfs.ha.automatic-failover.enabled</name><value>false</value></property><property><name>dfs.journalnode.edits.dir</name><value>/home/hadoop/hdfs/journal/</value></property>可以在主目录下建立hdfs文件夹,及里面的data,name,journal三个文件夹,有时候系统也会自动生成,这点诸位可以自行尝试。6.修改yarn-env.sh加入java环境变量即可7.修改slaves(即各个datanode 主机名),加入以下三行hadoop2hadoop3hadoop48.在/home/hadoop/hadoop-2.6.0/etc/hadoop/目录下新建一个文件fairsheduler.xmltouch fairsheduler.xml将下面的内容复制进去<allocations><queue name="infrastructure"><minResources>102400 mb, 50 vcores </minResources><maxResources>153600 mb, 100 vcores </maxResources><maxRunningApps>200</maxRunningApps><minSharePreemptionTimeout>300</minSharePreemptionTimeout><weight>1.0</weight><aclSubmitApps>root,yarn,search,hdfs</aclSubmitApps></queue><queue name="tool"><minResources>102400 mb, 30 vcores</minResources><maxResources>153600 mb, 50 vcores</maxResources></queue><queue name="sentiment"><minResources>102400 mb, 30 vcores</minResources><maxResources>153600 mb, 50 vcores</maxResources></queue></allocations>3.验证hadoophadoop 启动(HDFS , YARN启动)注意:所有操作均在Hadoop部署目录下进行。启动Hadoop集群:Step1 :在各个JournalNode节点上,输入以下命令启动journalnode服务:sbin/hadoop-daemon.sh start journalnode通过jps可以查看到启动情况Step2:在[nn1]上,对其进行格式化,并启动:bin/hdfs namenode –format观察到如下界面即为格式化成功,status为0即为成功,若为1或者其他数字则有错,请重新检查之前的步骤。格式化成功后,启动acivenamenodesbin/hadoop-daemon.sh start namenodeStep3:在[nn2]上,同步nn1的元数据信息:bin/hdfs namenode -bootstrapStandby 观察到如下图,备用节点格式化成功Step4:启动[nn2]:sbin/hadoop-daemon.sh start namenode经过以上四步操作,nn1和nn2均处理standby状态Step5:将[nn1]切换为Activebin/hdfs haadmin -transitionToActive nn1Step6:在[nn1]上,启动所有datanodesbin/hadoop-daemons.sh start datanode查看数据节点启动情况Step7:启动yarn:在[nn1]上,输入以下命令sbin/start-yarn.sh此时在activenamenode下输入jps,观察到除了NameNode进程,还有ResourceManager的进程;在datanode下输入jps,观察到除了DataNode进程,还有NodeManager的进程,这里就不截图了。Step8:关闭hadoop集群:在[nn1]上,输入以下命令sbin/stop-dfs.shweb地址访问:192.168.47.131:50070activenamenodeStandbynamenode192,168.47.132:50070查看datanodes信息在web端输入 192.168.47.131:8088即可看到yarn工作界面看到如上界面即表示hadoop YARN环境搭建部署ok了,第一次搭建打开网页成功后,之后可能第二次格式化会出各种问题,笔者也在探索,还有后续内容喔。
