Hadoop的配置
介绍 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,HadoopDistributed Filesystem)和MapReduce(GoogleMapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。 对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。 从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务sup。 OS版本: Redhat Linux 6.4 1. 配置准备 2. 配置hostname和host文件 NETWORKING=yes HOSTNAME=master GATEWAY=192.168.92.1 两个节点的host文件 192.168.92.129 slave 192.168.92.128 master 3. 下载软件包 a. hadoop1.2.1 http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-1.2.1/ b. Java 1.6以上 http://www.oracle.com/technetwork/java/javase/overview/index.html http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 4.1 配置master无密码登录所有的Slave服务器 Hadoop运行中需要管理远程Hadoop守护进程,Namenode是通过SSH来启动和停止各个Datanode上的服务,所以在节点之间是不需要输入密码的。所以需要配置ssh无密码公钥认证。 a. 检查安装包 [hadoop@slave ~]$ rpm -qa| grep openssh openssh-5.3p1-84.1.el6.x86_64 openssh-askpass-5.3p1-84.1.el6.x86_64 openssh-clients-5.3p1-84.1.el6.x86_64 openssh-server-5.3p1-84.1.el6.x86_64 [hadoop@slave ~]$ rpm -qa| grep rsync rsync-3.0.6-9.el6.x86_64 b. 配置,在root用户下master服务器上操作。使master可以无密码访问所有slave机器。 ssh-keygen -t rsa -P '' 追加文件 [iyunv@master .ssh]# pwd /root/.ssh [iyunv@master .ssh]# cat id_rsa.pub >>~/.ssh/authorized_keys 修改权限 [iyunv@master .ssh]# chmod 0600./authorized_keys c. 在master服务器上修改ssh服务 [iyunv@master ~]# vim /etc/ssh/sshd_config 配置文件中去掉注释, RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 重启sshd服务 [iyunv@master ~]# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ] 把公钥复制到所有的slave服务器上。 scp ./id_rsa.pub hadoop@slave:/root/ 追加文件到authorized_keys中 [iyunv@slave .ssh]$ cat id_rsa.pub >> /root/.ssh/authorized_keys [iyunv@slave .ssh]$ chmod 600authorized_keys 在slave上修改sshd配置文件,步骤参考master上的配置。然后重启sshd服务 测试,在master上通过root账号直接登录slave. [iyunv@slave data]# ssh master Last login: Tue Mar 31 10:39:55 2015 from10.32.198.146 [iyunv@master ~]# ssh slave Last login: Tue Mar 31 10:45:29 2015 frommaster 此时,已经实现master访问slave服务器无密码登录,删除slave服务器上的pub文件 [iyunv@slave .ssh]# rm -f id_rsa.pub 4.2 配置所有的Slave无密码登录master 参考4.1的步骤 5. 安装java环境 在根目录下创建data目录。将java和hadoop的包放入。 [iyunv@master data]# pwd /data tar -xvzf jdk-8u40-linux-x64.gz mv jdk1.8.0_40/ java 6.设置变量 添加java export JAVA_HOME=/data/java exportCLASSPATH=$JAVA_HOME/lib/tools.jar:/lib/dt.jar exportPATH=$JAVA_HOME/bin:$PATH
[iyunv@master etc]# java -version java version "1.8.0_40" Java(TM) SE Runtime Environment (build1.8.0_40-b26) Java HotSpot(TM) 64-Bit Server VM (build25.40-b25, mixed mode) 7. 准备hadoop环境 a. 在/data下解包,改文件夹名字 tar -xvzf hadoop-1.2.1.tar.gz mv hadoop-1.2.1 hadoop b. 检查hadoop目录权限 [iyunv@master data]# ll | grep hadoop drwxr-xr-x 17 root root 4096 Mar 3110:17 hadoop 8. 配置hadoop a. 配置hadoop-env.sh设置javahome和hadoop home hadoop-env.sh 和 yarn-env.sh 在开头添加如下环境变量(一定要添加切勿少了) [iyunv@master conf]# pwd /data/hadoop/conf [iyunv@master hadoop]# vim hadoop-env.sh export JAVA_HOME=/data/java b. 配置文件 core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。 1)配置core-site.xml /data/hadoop/etc/hadoop <configuration> <property> <name>hadoop.tmp.dir</name> <value>/data/hdfstmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
2) 配置hdfs-site.xml,先配置单节点测试此处1是副本数 [iyunv@master conf]# cat hdfs-site.xml <?xml version="1.0"?> <?xml-stylesheettype="text/xsl" href="configuration.xsl"?> <!-- Put site-specific propertyoverrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
3) 配置mapred-site.xml文件 <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
9.格式化 bin/hadoop namenode -format 10.启动服务 bin/start-all.sh 11. 打开页面测试
第二部分,hadoop扩展 先停止hadoop所有服务 1.修改master上的配置文件 修改hdfs配置文件 vim hdfs-site.xml <property> <name>dfs.replication</name> <value>2</value> </property> 2.修改core-site.xml
<configuration>
<property> <name>hadoop.tmp.dir</name> <value>/data/hdfstmp</value> </property>
<property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property>
</configuration>
3.修改mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
4.修改slaves文件,第二个节点的主机名 [iyunv@masterconf]# cat slaves master slave
5.修改masters文件 [iyunv@masterconf]# cat masters master
6.拷贝hadoop文件夹到第二个节点上。 [iyunv@masterdata]# scp -r hadoop slave:/data/
7.拷贝profile文件到slave服务器上。 [iyunv@masterdata]# scp -r /etc/profile slave:/etc/
8.格式化 [iyunv@masterbin]# ./hadoop namenode -format
9.启动所有服务 [iyunv@masterbin]# ./start-all.sh
|