首页 > 大数据 > Hadoop > Centos安装部署Hadoop
2013
12-30

Centos安装部署Hadoop

 

1、安装环境准备
 
 root帐号登录(生产环境请单独创建用户)
 
 节点名称 节点IP地址  节点功能
 hadoop1  192.168.0.201 resourcemanager, nodemanager, proxyserver,historyserver, datanode, namenode
 hadoop2  192.168.0.202 datanode, nodemanager
 hadoop3  192.168.0.203 datanode, nodemanager
 
 jdk-7u45-linux-x64.tar.gz 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
 hadoop-2.2.0.tar.gz 下载地址:http://hadoop.apache.org/releases.html#Download(官方目前只提供32位安装包,64位安装包需要自行编译:http://www.yanwenbo.cn/2013/12/31/222

 下载后包解压到本地(可根据需要修改,为了测试方便我都解压到本地)
 #tar -zxvf jdk-7u45-linux-x64.tar.gz
 #tar -zxvf hadoop-2.2.0.tar.gz
 
2、配置环境变量
 
 有旧版本jdk请卸载。
  
    添加环境变量
   #vi /etc/profile
 export JAVA_HOME=/root/jdk1.7.0_45
 export HADOOP_HOME=/root/hadoop-2.2.0
 
 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH  
 
 使环境变量立即生效
 source /etc/profile

3、配置节点参数
 
  修改hostname为hadoop1
 #vi /etc/sysconfig/network
 
 修改静态IP、MAC地址和子网掩码
 #vi /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE=eth0
 HWADDR=00:50:56:3E:3A:B5
 TYPE=Ethernet
 UUID=908c6b0b-d5fc-470e-9fc8-86fd6609f692
 ONBOOT=yes
 NM_CONTROLLED=yes
 BOOTPROTO=static
 IPADDR=192.168.0.235
 NETMASK=255.255.255.0
 
 添加hosts
 #vi /etc/hosts
 192.168.0.201 hadoop1   
 192.168.0.202 hadoop2  
 192.168.0.203 hadoop3  
 
 修改ssh登录配置,删除以下三行前的#
 RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile      .ssh/authorized_keys
 
 生成ssh登录验证的key(一般系统默认是安装ssh命令的,若没有请重新安装)
 #ssh-keygen -t rsa
 
 一直回车后会产生密钥,系统会自动生成.ssh目录,接下来进入ssh目录
 #cd /root/.ssh
 
 把id_rsa.pub追加到授权的key里
 #cat id_rsa.pub >> authorized_keys
 
 关闭防火墙
 #chkconfig iptables off
 
 #vi /etc/selinux/config
 SELINUX=enforcing 改为 SELINUX=disabled
 
 重启
 #reboot

4、配置Hadoop

 进入根目录,创建三个目录,用来存放hadoop文件和日志
 #cd /root
 #mkdir -p dfs/name
 #mkdir -p dfs/data
 #mkdir -p temp
 
 进入hadoop-2.2.0目录

 修正启动脚本里的BUG
 #vi libexec/hadoop-config.sh
 找到: export HADOOP_SLAVES=”${HADOOP_CONF_DIR}/$$1″
 修改为:export HADOOP_SLAVES=”${HADOOP_CONF_DIR}/$1″
 
 进入etc/hadoop目录
 
 修改JAVA_HOME
 #vi hadoop-env.sh
 找到  export JAVA_HOME=${JAVA_HOME}
 修改为:export JAVA_HOME=/root/jdk1.7.0_45
 
 #vi yarn-env.sh
 找到 #export JAVA_HOME=/home/y/libexec/jdk1.6.0/
 修改为: export JAVA_HOME=/root/jdk1.7.0_45

 配置slave节点
 #vi slaves
 hadoop2
 hadoop3
 
 配置hdfs系统URL、文件缓存等
 #vi core-site.xml
 <property> 
  <name>fs.defaultFS</name> //fs.defaultFS为2.2.0新的变量,代替旧的:fs.default.name
  <value>hdfs://192.168.0.235:9000</value> //系统分布式URL 
 </property> 
 <property> 
  <name>io.file.buffer.size</name> 
  <value>131072</value> //文件缓冲区大小
 </property> 
 <property> 
  <name>hadoop.tmp.dir</name> 
  <value>file:/root/temp</value> //临时文件路径
 </property> 
 <property> 
  <name>hadoop.proxyuser.hadoop.hosts</name> 
  <value>*</value> //所有hosts
 </property> 
 <property> 
  <name>hadoop.proxyuser.hadoop.groups</name> 
  <value>*</value> //所有groups
 </property> 
 
 配置namenode、datanode的本地目录信息
 #vi hdfs-site.xml
 <property> 
  <name>dfs.namenode.secondary.http-address</name> //SecondaryNameNode
  <value>192.168.0.235:9001</value> //namenode的代理URL
 </property> 
 <property> 
  <name>dfs.namenode.name.dir</name> //dfs.namenode.name.dir为2.2.0新的变量,代替旧的:dfs.name.dir
  <value>file:/root/dfs/name</value> //指定namenode的name路径
 </property> 
 <property> 
  <name>dfs.datanode.data.dir</name>  //dfs.datanode.name.dir为2.2.0新的变量,代替旧的:dfs.data.dir
  <value>file:/root/dfs/data</value> //指定datanode的data路径     
 </property> 
 <property> 
  <name>dfs.replication</name> //确定datablock的副本数目,hadoop基于rackawareness(机架感知)
  <value>3</value> //默认复制3份分block,同一个rack下两个,另一个rack下一份,按照最短距离确定具体所需block,一般很少采用跨机架数据块,除非某个机架down了
 </property> 
 <property> 
  <name>dfs.webhdfs.enabled</name> 
  <value>true</value>  //打开webhdfs
    </property> 

 配置使用Yarn框架执行map-reduce处理程序
 #cp mapred-site.xml.template mapred-site.xml 
 #vi mapred-site.xml
 <property> 
  <name>mapreduce.framework.name</name> //新的计算框架取消了实体上的jobtracker,故不需要再指定mapreduce.jobtracker.addres
  <value>yarn</value>  //这里选择yarn框架(Hadoop支持第三方的计算框架)
 </property> 
 
 配置ResourceManager、NodeManager的通信端口,WEB监控端口等
 #vi yarn-site.xml
 <property> 
  <name>yarn.nodemanager.aux-services</name> 
        <value>mapreduce_shuffle</value> 
 </property>
 <property> 
  <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> 
  <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
 </property> 
 <property> 
  <name>yarn.resourcemanager.address</name> 
  <value>192.168.0.235:8032</value> 
 </property> 
 <property> 
  <name>yarn.resourcemanager.scheduler.address</name> 
  <value>192.168.0.235:8030</value> 
 </property> 
 <property> 
  <name>yarn.resourcemanager.resource-tracker.address</name> 
  <value>192.168.0.235:8031</value> 
 </property> 
 <property> 
  <name>yarn.resourcemanager.admin.address</name> 
  <value>192.168.0.235:8033</value> 
 </property> 
 <property> 
  <name>yarn.resourcemanager.webapp.address</name> 
  <value>192.168.0.235:8088</value> 
 </property> 
 <property>
  <name>yarn.nodemanager.resource.memory-mb</name> 
  <value>15360</value> //配置内存大小
 </property> 

 到这里基本配置完成,复制配置好的节点,重新命名为hadoop2、hadoop3(修改对应的IP、hostname、MAC等后重启)。
 
5、配置ssh本地无密码登录slave节点
 
 进入hadoop1主机的.ssh目录,将authorized_kyes复制到hadoop2和hadoop3主机
 #scp authorized_keys root@hadoop2:~/.ssh/authorized_keys_from_master
 #scp authorized_keys root@hadoop3:~/.ssh/authorized_keys_from_master
 
 分别进入hadoop2和hadoop3主机的.ssh目录
 #cat authorized_keys_from_master >> authorized_keys
 
 至此,可以在hadoop1主机上面对root@hadoop2root@hadoop3进行无密码登陆了
 #ssh root@hadoop2
 #ssh root@hadoop3
  
6、格式化namenode
 
 进入hadoop-2.2.0目录
 
 格式化namenode
 #./bin/hdfs namenode -format

 启动hdfs
 #./sbin/start-dfs.sh
 
 启动yarn
 #./sbin/start-yarn.sh
 
 在hadoop1中输入jps应该可以看到NameNode、SecondaryNameNode、ResourceManager服务
 在hadoop2、hadoop3中输入jps应该可以看到DataNode和NodeManager服务
 
 查看集群状态
 #./bin/hdfs dfsadmin -report
 
 查看文件块组成 
 #./bin/hdfs fsck / -files -blocks

 查看各节点状态
 http://192.168.0.235:50070
 
 查看ResourceManager集群运行状态
 http://192.168.0.235:8088
 
 7、其他

 如果无法访问Browse the filesystem,在本机的hosts加入对应主机名,重启浏览器即可

最后编辑:
作者:sleepyan
这个作者貌似有点懒,什么都没有留下。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!