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 ''
追加文件
[root@master .ssh]# pwd
/root/.ssh
[root@master .ssh]# cat id_rsa.pub >>~/.ssh/authorized_keys
修改权限
[root@master .ssh]# chmod 0600./authorized_keys
c. 在master服务器上修改ssh服务
[root@master ~]# vim /etc/ssh/sshd_config
配置文件中去掉注释,
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启sshd服务
[root@master ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
把公钥复制到所有的slave服务器上。
scp ./id_rsa.pub hadoop@slave:/root/
追加文件到authorized_keys中
[root@slave .ssh]$ cat id_rsa.pub >> /root/.ssh/authorized_keys
[root@slave .ssh]$ chmod 600authorized_keys
在slave上修改sshd配置文件,步骤参考master上的配置。然后重启sshd服务
测试,在master上通过root账号直接登录slave.
[root@slave data]# ssh master
Last login: Tue Mar 31 10:39:55 2015 from10.32.198.146
[root@master ~]# ssh slave
Last login: Tue Mar 31 10:45:29 2015 frommaster
此时,已经实现master访问slave服务器无密码登录,删除slave服务器上的pub文件
[root@slave .ssh]# rm -f id_rsa.pub
4.2 配置所有的Slave无密码登录master
参考4.1的步骤
5. 安装java环境
在根目录下创建data目录。将java和hadoop的包放入。
[root@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
[root@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目录权限
[root@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 在开头添加如下环境变量(一定要添加切勿少了)
[root@master conf]# pwd
/data/hadoop/conf
[root@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是副本数
[root@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文件,第二个节点的主机名
[root@master conf]# cat slaves
master
slave
5.修改masters文件
[root@master conf]# cat masters
master
6.拷贝hadoop文件夹到第二个节点上。
[root@master data]# scp -r hadoop slave:/data/
7.拷贝profile文件到slave服务器上。
[root@master data]# scp -r /etc/profile slave:/etc/
8.格式化
[root@master bin]# ./hadoop namenode -format
9.启动所有服务
[root@master bin]# ./start-all.sh
本文出自 “小埃” 博客,谢绝转载!