|
伪分布式模式安装
学习hadoop有一段时间,中间忙了很久没看过,虚拟机的hadoop也被删除了,之前装的是hadoop集群环境, 都是使用虚拟机,因为集群环境多配置,暂先将配置伪集群方式搭建起来使用,其使用的原理都是一样的,后面 有时间再把真实集群搭建一次,下面是我搭建的步骤:
我是win7 64位系统,但因centOS 64位尚未下载,先装32位的
先说下准备的软件(32位):
1.虚拟机 : wmWare10
2.Linux系统 : CentOS-6.4-i386-bin-DVD
3.JDK : jdk-7u45-linux-i586.rpm
4.远程连接:secureCRT,因每次到虚拟机操作有点麻烦而且速度慢
上面的1,2软件安装就不说了,很简单直接安装即可,系统安装完成后设置网络连接,让其接通的即可.
3. 安装JDK,网上文档很多,简单提下,推荐使用1.6版本, 因为hadoop是在1.6下经过测试通过的,
3.1 先验证源系统是否存在自带jdk :
# rpm -qa|grep gcj
之前是否已安装过jdk,最好卸载后重装,保证jdk完整
#rpm -qa|grep jdk
上述命令若有返回值则使用rpm -e --nodeps 命令删除上面查找的内容;
3.2 整理清楚jdk后使用
rpm -ivh jdk-6u24-linux-i586.rpm 命令即可,
若是jdk-6u24-linux-i586.bin文件,直接前面加点(./文件名)执行,如无权限再赋予即可,
如果没有报错说明安装成功,默认的安装路径是在/usr/java路径下;以后配置会用到这个路径,将其目录名修改为 jdk6, 接下来就是和windows一样要配置环境变量:
编辑文件# /etc/profile,在空白的地方加入以下内容:
export JAVA_HOME=/usr/java/jdk6
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
3.3 然后命令 #source /etc/profile 使其生效;最后使用java -version验证是否安装配置成功;
4. 关闭防火墙,此操作不是必须的,只是为了减少学习过程中避免无谓的错误,而选择关闭防火墙,防火墙的目的是关闭尽可能不用的端口,避免恶意攻击,保证安全性,在实际工作中也不可能把防火墙关闭.
使用命令 # service iptables status 查看防火墙状态,
使用命令 # service iptables stop 关闭防火墙;
5.修改主机名和设置DNS解析,
5.1 修改主机名称, 命令 #vi /etc/sysconfig/network => HOSTNAME=hadoop
显示效果可以重启系统, 看最左边盘符
5.2 hadoop集群之前通过主机名来互相访问,需设置域名解析,与window是文件名一样,
编辑文件 # vi /etc/hosts ,在最后新增一行,例如192.168.0.201 hadoop;
6.设置SSH免密码登录,如果需要远程管理其他机器,传统只能使用命令telnet访问,但其通信不加密致使不安全,只能在内网直接访问,解决这个问题退出了ssh加密通信协议 SSH(Secure Shell), 使用非对称加密方式,传输内容使用rsa或的dsa加密,因每次ssh通信需要登录,所以需配置免密码登录:
6.1 先到主目录下,命令 # cd ~,可以看到.ssh隐藏文件夹,其是用来存放密钥的;
6.2 命令 # ssh-keygen -t rsa , 前一横杠是没有空格的 ,回车后还会有3次的输入信息,直接再回车就ok;
6.3 命令进入 # cd .ssh , (.ssh的权限是700)看到有2个文件, 命令拷贝 # cp id_rsa.pub authorized_keys 生成授权文件, 3个文件的权限是除了自己有写权限外,其他都是没有的;
6.4 验证ssh登录, 命令 # ssh localhost ,确认后会改变当前用户,多次更换是不需要确认,若需要是配置出错;
华丽分割线---------------------------------到此已经成功一半了,下面来安装hadoop系统:
1. 将下载好的hadoop1.2.1.tar.gz放到/urs/local下,
命令解压包到当前 # tar -zxvf hadoop1.2.1.tar.gz , 因为以后配置会用到这个路径,将其目录名修改为hadoop,
2. 配置hadoop环境变量 , 在/etc/profile下新增一行:
HADOOP_HOME=/usr/local/hadoop
下面增加 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME
记得修改profile文件都需要重新加载 # source /etc/profile
3. 修改hadoop的内部配置文件:
1. hdfs-env.sh
一般情况下是,修改文件第9行的JAVA_HOME路径;
export JAVA_HOME=/usr/local/jdk6/
2. core-site.xml:配置hdfs
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
<description>hdfs</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
<description>hdfs</description>
</property>
</configuration>
3. hdfs-site.xml:配置hdfs分布数量
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>MapReduce</description>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>MapReduce</description>
</property>
</configuration>
4. mapred-site.xml:配置MapReduce
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop:9001</value>
<description>MapReduce</description>
</property>
</configuration>
4. 格式化hadoop文件: 只需要一次即可
命令 $HADOOP_HOME/bin/hadoop namenode -format, 看到输出信息中有successfully format即表示成功, 不成功会有错误信息,根据信息修改后继续执行上命令, 执行成功后,不可多次格式化操作,会引起未知错误,若执行多次,可将hadoop下的tmp目录删除后,重新格式化
5. 启动/关闭hadoop:
到了这里,至少可以恭喜你配置完成,只是完成,还没完整成功,只差最后一步启动了
hadoop启动提供了多种方式:可以在bin目录下查看命令
1. 最省事:
start-all.sh(stop-all.sh) :
一看就知道是启动全部,一共会有5个java进程启动,NameNode, DataNode,SecondaryNameNode,
JobTracker, TaskTracker
2. 分类启动:
start-dfs.sh(stop-dfs.sh):
hdfs的启动,只会启动NameNode, DataNode,SecondaryNameNode3个进程
start-mapred.sh(stop-mapred.sh):
MapReduce的启动,只会启动 JobTracker, TaskTracker 2个进程
3. 单独启动:分别启动5个进程,适用于单独增加/删除节点情景
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
6. 查看hadoop运行情况:
6.1 使用命令jps查看当前hadoop正在运行的java进程, 对应启动命令查看进程便可以知道是否启动成功 , 一般全量启动一共有5个进程 , 即上述的5个 , 缺少对应的进程说明启动失败, 可以到hadoop下的logs目录查看最新启动的日志
6.2 浏览器查看: 与访问web项目一样, 下列是默认的端口,若有冲突可以修改
http://hadoop:50070 查看NameNode的管理信息 , 包括DataNodes的信息
http://hadoop:50030 查看JobTracker的管理信息, 包括TaskTrackers的信息
7. 运行一个系统自带统计单词数量的DEMO:
7.1 先上传一个文件, 最好是文件大一点的, 命令 hadoop fs -put <fs-dir> ,
7.2 在fs上创建一个文件夹来放置结果 , 命令 hadoop fs -mkdir result
7.3 在$HADOOP_HOME下有一个jar包: hadoop-examples-1.2.1.jar , 这是一个已经写好的MapReduce程序, 运行命令 hadoop jar hadoop-examples-1.2.1.jar wordcount <in> <out> , 输入文件绝对路径和输出文件目录, 回车后有一些执行过程信息;
7.4 完成后在上面指定的输出目录查看结果:
命令 hadoop fs -text /result/part-r-00000 查看 , 输出目录下包含了运行的日志 , 结果等 ,具体自己一个个查看;
至此, hadoop的伪分布式环境搭建成功 , 后续要继续了解hdfs的命令和自己去熟悉MapReduce的java API , 用其来进行大数据量的计算工作 , 其效率是杠杠的(大文件). |
|