新学期开始了,在学校的日子开始倒计时~~~有点矫情了。

寒假在广州呆了一个月,没做什么,出去转了一圈,依然不知道找工作的事水有多深。期间看了一篇博文,感触良多。此前虽然钻研过不少技术,但是说白了就是CURD,没意思,没技术含量。早就打算坐下来看看Hadoop,但是一直没有找到合适的资料,昨天终于搜集到一份比较完整的,就此开始Hadoop的学习~~共勉!!

学习视频下载地址

PS:学习Hadoop之前需要对Linux有基本的了解,参考之前的一篇文章

使用到的软件 VMWare9.0  centOS6.4 X64  Hadoop1.2.1 JDK1.7 X64

虚拟机的安装不再赘述,JDK的安装请参考《》一文。

软件安装规则

/opt  父目录

/opt/modules      存放软件的安装目录

/opt/softwares    存放软件包(tar、bin、zip)

/opt/tools            存放工具目录(eclipse)

/opt/data             存放一些测试数据

/home/hadoop    存放工具盒测试数据目录

安装Hadoop

1.解压   tar -zxvf hadoop-1.2.1.tar.gz

2.移动软件到安装目录   mv hadoop-1.2.1 /opt/modules/

3.配置环境变量,编辑/etc/profile文件,添加如下内容

##HADOOP

export HADOOP_HOME=/opt/modules/hadoop-1.2.1

export PATH=$PATH:/opt/modules/hadoop-1.2.1/bin

以root用户登录,执行 source /etc/profile 使配置生效

4.测试 hadoop

5.配置Hadoop中JDK的安装目录

在/opt/modules/hadoop-1.2.1/conf/hadoop-env.sh中设置

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_25

6.测试MapReduce程序

①在/opt/data目录下新建input目录

②复制hadoop目录下conf目录下的xml文件到/opt/data/input

cp /opt/modules/hadoop-1.2.1/conf/*.xml /opt/data/input/

③在hadoop目录下执行以下命令

hadoop jar hadoop-examples-1.2.1.jar grep /opt/data/input/ /opt/data/output 'dfs[a-z.]+'

执行完成之后会在data目录下生成output文件夹

程序功能:在xml文件中找出所有以dfs开头的单词



Apache Hadoop 伪分布模式安装 

①关闭防火墙和禁用SELnux

#service iptables status    查看防火墙状态

#service iptables stop      关闭防火墙

#vim /etc/sysconfig/selinux   设置SELINUX=disabled

②设置静态IP地址

#vi /etc/sysconfig/network-scripts/ifcfg-eth0 (也可以手动设置)

测试中的配置为IP:192.168.110.130   网关:192.168.110.2  子网掩码:255.255.255.0

③修改Hostname

#hostname hadoop-master

#vi /etc/sysconfig/network    修改配置文件,永久生效

④IP与Hostname绑定

#vi /etc/hosts

在hosts文件中加入192.168.110.130 hadoop-master.dragon.org hadoop-master

⑤设置SSH自动登录--所有守护进程彼此通过SSH协议进行通信

$ssh-keygen -t rsa

用命令ls -al查看文件列表,生成.ssh文件,默认权限为700

进入.ssh文件夹,已生成公钥和私钥

将公钥复制一份到当前目录,文件名改为authorized_keys

$cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

authorized_keys文件的权限为644

密钥信息存储在known_hosts文件中。

⑥安装JDK

$./jdk-6u24-linux-i586.bin 

more /etc/profile 查看Java和Hadoop的配置

source /etc/profile  使配置生效

在Windows中使用UltraEdit登录FTP服务器修改配置文件

在/opt/modules/hadoop-1.2.1/conf/core-site.xml文件中做如下配置

fs.default.name
hdfs://hadoop-master.dragon.org:9000
hadoop.tmp.dir
/opt/data/tmp

需要手动创建/opt/data/tmp目录

在/opt/modules/hadoop-1.2.1/conf/hdfs-site.xml文件中做如下配置

dfs.replication
1
dfs.permissions
false

在/opt/modules/hadoop-1.2.1/conf/mapred-site.xml文件中做如下配置

mapred.job.tracker
hadoop-master.dragon.org:9001

在/opt/modules/hadoop-1.2.1/conf/slaves文件中做如下配置。将localhost改为如下。

DataNodes(块存储)  TaskTrackers(任务执行)通常在同一台机器上,用slaves文件配置。

hadoop-master.dragon.org

指定Secondary NameNode(辅助元数据服务器)在masters文件中配置

hadoop-master.dradon.org

-------------------------------------------------------------------

进入到/opt/modules/hadoop-1.2.1/bin目录下,使用 ./hadoop查看命令选项。

运行格式化命令 ./hadoop namenode -format

启动dfs,命令 start-dfs.sh

使用jps命令查看Java进程

NameNode  DataNode SecondaryNameNode 都已启动

在浏览器中测试http://192.168.110.130:50070/dfshealth.jsp

接下来启动 start-mapred.sh

通过jps命令查看Java进程

JobTracker  TaskTracker均已启动。

通过

关闭

stop-mapred.sh

stop-dfs.sh

通过jps查看关闭情况。

还可以通过start-all.sh来启动,通过stop-all.sh来关闭。

启动顺序:NameNode  DataNode SecondaryNameNode  JobTracker  TaskTracker

停止顺序:JobTracker  TaskTrackerNameNode  DataNode SecondaryNameNode  

还可以按照以上顺序分别启动或者停止每个进程。

hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode

hadoop-daemon.sh start secondarynamenode

hadoop-daemon.sh start jobtracker

hadoop-daemon.sh start tasktracker

至此,Hadoop安装成功~~



日志文件,两种格式: .log  .out   日志文件存储目录可在conf/hadoop-enc.sh文件中配置。

.log 日志文件,在conf/log4j.properties文件中配置,采用日常滚动文件后缀策略来命名日志文件,内容比较全。

.out 日志文件,记录标准输出和标准错误,内容比较少。默认情况,系统保留最新的5个日志文件。

hadoop-root-datanode-hadoop-master.log

      ①       ②       ③                   ④           ⑤      

①框架的名称

②启动守护进程的用户名

③守护进程的名称

④运行守护进程的名称

⑤日志的格式,log和out

三大基础配置文件:

①core-site.xml 配置Hadoop Common Project 相关的属性配置,Hadoop1.x框架基础属性的配置

②hdfs-site.xml 配置HDFS Project 文件系统相关的属性

③mapred-site.xml 配置MapReduce 框架相关的属性

配置文件

①masters 主节点,并不是配置Hadoop中的主节点的相关信息,配置HDFS辅助接点的信息

②slaves从节点,配置Hadoop1.x中的HDFS和MapReduce框架的从节点信息

Hadoop1.x 五大服务(守护进程)

NameNode DataNode SecondaryNameNode JobTracker TaskTracker