Hadoop学习笔记——搭建
一搭建环境列表
操作系统:centos6.5 64位
JDK环境:jdk1.7.0_71
hadoop版本:社区版本2.7.2,hadoop-2.7.2-src.tar.gz
|
主机名 |
ip |
角色 |
用户 |
|
master1 |
192.168.204.202 |
Namenode;secondary namenode;resourcemanager |
hadoop |
|
slave1 |
192.168.204.203 |
Datanode; nodemanager |
hadoop |
|
slave2 |
192.168.204.204 |
Datanode; nodemanager |
hadoop |
二操作系统环境准备
1设置主机名:hostname
vi /etc/sysconfig/network
2设置防火墙
chkconfig iptables off
service iptables off
3关闭Selinux
vi /etc/sysconfig/selinux
SELINUX=disabled
|
[root@cloud001 Desktop]# hostname [root@cloud001 Desktop]# ifconfig [root@cloud001 Desktop]# service iptables status [root@cloud001 Desktop]# sestatus |
4安装jdk
配置环境变量
[root@master1 hadoopsolf]vim /etc/profile
JAVA_HOME=/usr/java/jdk1.7.0_71(根据实际情况修改)
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
[root@ master1 hadoopsolf]source /etc/profile
三hadoop2.X软件编译环境准备
1下载http://apache.claz.org/hadoop/common/最新版
2准备编译环境
tar -zxvf hadoop-2.7.2-src.tar.gz得到hadoop-2.7.2-src文件夹。
进入hadoop-2.7.2-src文件夹,查看BUILDING.txt
cd hadoop-2.7.2-src
vim BUILDING.txt
可以看到编译所需的库或者工具。
3jdk
安装jdk;然后打开/etc/profile配置jdk环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_71
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=/usr/java/jdk1.7.0_71
export PATH=$PATH:$JRE_HOME/bin
source /etc/profile
运行javac -version 查看状态
4安装各种库
yum -y install svn ncurses-devel gcc*
yum -y install lzo-devel zlib-develautoconf automake libtool cmake openssl-devel
5安装protobuf-2.5.0.tar.gz
tar zxvf protobuf-2.5.0.tar.gz进入protobuf-2.5.0依次执行
cd protobuf-2.5.0
./configure
make
make install
查版本[root@master1 protobuf-2.5.0]# protoc -version
6安装maven
下载http://maven.apache.org/download.cgi
tar -zxvf apache-maven-3.3.9-bin.tar.gz -C /hadoopsolf
然后打开/etc/profile配置环境变量
export MAVEN_HOME=/hadoopsolf/apache-maven-3.3.9
export MAVEN_OPTS="-Xms256m-Xmx512m"
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
查版本:[root@master1 protobuf-2.5.0]# mvn -version
7安装ant
下载:http://ant.apache.org/bindownload.cgi
tar -zxvf apache-ant-1.9.6-bin.tar.gz -C /hadoopsolf
然后打开/etc/profile配置环境变量
export ANT_HOME=/hadoopsolf/apache-ant-1.9.6
export PATH=$ANT_HOME/bin:$PATH
source /etc/profile
验证:[root@master1 protobuf-2.5.0]# ant -version
8安装findbugs
下载:http://findbugs.sourceforge.net/downloads.html
vim /etc/profile 文件末尾添加:
export FINDBUGS_HOME=/hadoopsolf/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin
source /etc/profile
验证:[root@master1 protobuf-2.5.0]# findbugs -version
9 hadoop2.X软件编译
mvn clean package -Pdist,native -DskipTests -Dtar
或者
mvn package -Pdist,native -DskipTests -Dtar
务必保持网络畅通,需要经过漫长的等待!
四安装配置hadoop2.X
1配置ssh免密码登录
1.1各主机配置hosts文件与主机名
|
vi /etc/hosts 192.168.204.202 master1 192.168.204.203 slave1 192.168.204.204 slave2 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=master1 // slave1, slave2 |
1.2各主机设置静态ip,互ping
1.3配置master1到2个slave(slave1,slave2)的免密码登录(按顺序操作)
(1)首先检查各机器是否已经安装[root@master1Desktop]# rpm -qa|grep ssh
|
已经安装 openssh-askpass-5.3p1-94.el6.x86_64 libssh2-1.4.2-1.el6.x86_64 openssh-5.3p1-94.el6.x86_64 openssh-server-5.3p1-94.el6.x86_64 openssh-clients-5.3p1-94.el6.x86_64 如果没有安装则 yum install ssh |
(2)在master1主机:
hadoop用户执行:ssh-keygen -t rsa下一步继续到结束
|
[hadoop@master1 ~]$ cd /home/hadoop/.ssh/ [hadoop@master1 .ssh]$ ls id_rsa id_rsa.pub [hadoop@master1 .ssh]$ cat id_rsa.pub>> authorized_keys |
root用户执行[master1Desktop]# chmod 600 /home/hadoop/.ssh/authorized_keys
hadoop用户执行验证
|
[hadoop@master1 ~]$ ssh master1 Last login: Mon Feb 22 22:23:16 2016 from master1 [hadoop@master1 ~]$ |
slave机器hadoop用户执行:mkdir-p /home/hadoop/.ssh
master1主机hadoop用户执行传送
|
[hadoop@master1~]$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/ [hadoop@master1~]$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/ |
slave机器root用户执行:chmod 600 /home/hadoop/.ssh/authorized_keys
master1机器hadoop用户执行验证
|
[hadoop@master1 ~]$ ssh slave1 [hadoop@master1 ~]$ ssh slave2 |
2安装hadoop2.X
hadoop用户在master1操作:
2.1把编译好的hadoop2.X解压至目录
(自定义,我这里是/home/hadoop)
[hadoop@master1 ~]$ tar -zxvf /hadoopsolf/hadoop-2.7.2.tar.gz -C /home/hadoop
配置hadoop2.X的环境变量,修改~/.bash_profile
|
vi /home/hadoop/.bash_profile export HADOOP_HOME=/home/hadoop/hadoop-2.7.2 export HADOOP_MAPRED_HOME=${HADOOP_HOME} export HADOOP_COMMON_HOME=${HADOOP_HOME} export HADOOP_HDFS_HOME=${HADOOP_HOME} export YARN_HOME=${HADOOP_HOME} export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop export HADOOP_LOG_DIR=${HADOOP_HOME}/logs export HADOOP_PID_DIR=/var/hadoop/pids --- 注意 (root用户创建/var/hadoop/pids并赋予hadoop权限 mkdir -p /var/hadoop/pids chown -R hadoop: hadoop /var/hadoop/pids ) export PATH=$PATH:$HADOOP_HOME/bin export JAVA_HOME=/usr/java/jdk1.7.0_71 export CLASSPATH=.:$JAVA_HOME/lib.tools.jar export PATH=$JAVA_HOME/bin:$PATH |
2.2配置Hadoop中基础目录
cd /home/hadoop/hadoop-2.7.2
$ mkdir -p dfs/name
$ mkdir -p dfs/data
$ mkdir -p tmp
$ cd etc/hadoop
2.3配置Hadoop中配置文件
需要配置的文件如下core-site.xml, hdfs-site.xml, mapred-site.xml, hadoop-env.sh,所有的文件均位于hadoop2.7.2/etc/hadoop下面,具体需要的配置如下:
core-site.xml 配置如下:
|
<property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/hadoop-2.7.2/tmp</value> <description>Abase for other temporary directories.</description> </property> //接收Client连接的RPC端口,用于获取文件系统metadata信息。 <property> <name>fs.defaultFS</name> <value>hdfs://master1:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> </property> |
hdfs-site.xml配置如下:
|
<property> <name>dfs.namenode.secondary.http-address</name> <value>master1:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hadoop-2.7.2/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hadoop-2.7.2/dfs/data</value> </property> <property> //2份 <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> |
mapred-site.xml配置如下:(cp mapred-site.xml.template mapred-site.xml)
|
<property> <name>mapreduce.framework.name</name> // mapreduce运行在yarn上。 <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master1:19888</value> </property> |
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>master1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master1:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master1:8088</value> </property> |
Vi slaves:
|
slave1 slave2 |
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_71
vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_71
2.4拷贝
从master1远程复制文件夹到slaveX机
scp -r /home/hadoop/hadoop-2.7.2 slave1:/home/hadoop
scp -r /home/hadoop/hadoop-2.7.2 slave2:/home/hadoop
3启动hadoop2.X
master1机器操作
3.1初始化HDFS系统
bin/hdfs namenode -format
3.2开启NameNode和DataNode守护进程
sbin/start-dfs.sh(此命令启动了namenode、secondaryNamenode以及datanode)
|
[hadoop@master1 sbin]$ ./start-dfs.sh Starting namenodes on [master1] master1: Error: JAVA_HOME is not set and could not be found. slave2: Error: JAVA_HOME is not set and could not be found. slave1: Error: JAVA_HOME is not set and could not be found. Starting secondary namenodes [master1] master1: Error: JAVA_HOME is not set and could not be found. 解决 vi /home/hadoop/hadoop-2.7.2/libexec/hadoop-config.sh |
此时在master1上面运行的进程有:namenode secondarynamenode
slaveX上面运行的进程有:datanode
./sbin/start-yarn.sh (此命令启动了ResourceManager和NodeManager)
此时在master1上面运行的进程有:namenode secondarynamenode resourcemanager
slaveX上面运行的进程有:datanode NodeManager
查看各进程
[hadoop@master1 hadoop-2.7.2]$ jps
8176 Jps
4356 ResourceManager
6277 NameNode
6429 SecondaryNameNode
3.3基本状态查看
查看帮助:
[hadoop@master1 hadoop-2.7.2]$./hdfs –help
[hadoop@master1 hadoop-2.7.2]$./hdfs dfs –help
[hadoop@master1 bin]$ hdfs dfsadmin -help
查看集群状态:./bin/hdfs dfsadmin –report
查看文件块组成:./bin/hdfs fsck / -files -blocks
可以通过登录Web控制台,查看HDFS集群状态: http://master1:50070 (hdfs-site.xml)
ResourceManager运行在主节点master上,查看yarn: http://master1:8088 (yarn-site.xml)
NodeManager运行在从节点上,查看例如节点slave1:http://slave1:8042/
管理JobHistory Server(先要启动mr-jobhistory-daemon.shstart historyserver),通过Web查看:http://master1:19888/jobhistory
查看hadoop:http://master1:9001
Hadoop学习笔记——搭建的更多相关文章
- Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
- Hadoop学习笔记(3)——分布式环境搭建
Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...
- Hadoop学习笔记(10) ——搭建源码学习环境
Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...
- Hadoop学习笔记(4) ——搭建开发环境及编写Hello World
Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...
- Hadoop学习笔记(1) ——菜鸟入门
Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...
- Hadoop学习笔记(1)(转)
Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...
- Hadoop学习笔记系列
Hadoop学习笔记系列 一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼 ...
- hadoop学习笔记(四):HDFS文件权限,安全模式,以及整体注意点总结
本文原创,转载注明作者和原文链接! 一:总结注意点: 到现在为止学习到的角色:三个NameNode.SecondaryNameNode.DataNode 1.存储的是每一个文件分割存储之后的元数据信息 ...
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
随机推荐
- android中接口和抽象类的区别
最近发现很多基础有点生疏了,特地写一点博客来巩固一下.今天主要来谈谈接口和抽象类的区别,我们在项目的很多地方都会用到接口或者抽象类,但是它们之间的一些区别和相同点不知道大家有没有注意到,还有就是,什么 ...
- [转载] 构造linux 系统下免密码ssh登陆 _How to establish password-less login with SSH
In present (post production) IT infrastructure many different workstations, servers etc. have to be ...
- html学习第三天—— 第11章 盒子模型 div
盒模型--边框(一) 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为div来设置边框粗细为2px.样式为实心的.颜色为红色的边框: div ...
- Unity3D 脚本编译器无法关联VisualStudio2012解决办法
开发环境:Win8 + Unity 4.34f1 +Visual Studio2012 旗舰版 解决办法: 1.创建一个start.bat文件,内容为:[start "" %* ...
- 运行jar应用程序引用其他jar包的四种方法
转载地址:http://www.iteye.com/topic/332580 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个ja ...
- ubuntu install eclipse-installer
1. sudo mkdir /usr/eclipseInstaller 2. tar -zxvf eclipse-inst-linux64.tar.gz -C /usr/eclipseInstalle ...
- Ubuntu14.10搭建C++开发环境
方法一:1、安装Eclipsesudo apt-get install eclipse2、安装Eclipse CDTsudo apt-get install eclipse-cdt3、安装Autoto ...
- django 在字符串[str(list)]中精确查找
1.问题描述 1.1表结构 1.2问题 ref_list为id列表的字符串,需要从ref_list中找出包含指定id的数据(eg id=8).如果实用models.objects.filter(ref ...
- 关于i和j
算法课无聊随手写了段c代码,发现了个问题,就要下课了,先记一下 for(int i = 0; i < 100; i ++) for(int j = 0; j < 100000; j ++) ...
- TPC-H生成.tbl文件导入postgresql数据库的坑
数据库project好好的不用主流的MySQL和Microsoft server而要求用听都没听过的postgresql (当然,可能你三个都没听过) 这里的坑主要是把生成的那八张.tbl的表导入pg ...