共计 4777 个字符,预计需要花费 12 分钟才能阅读完成。
因公司项目打算往 Hadoop 方向走,也打算正式的学习一下。第一次在工作中听到 Hadoop 还是在 4 年前,当时我们公司的一个技术大拿跟我说有时间可以考虑学习一下 Hadoop。当时所在的是属于为国企提供软件服务的小公司,其所需的技术含量和处理的数据量感觉完全跟所谓的“大数据”挂不上勾. 后面从该公司来到深圳之后进入现在的公司,才正式的接触到亿级以上的数据量的处理。也正是从接触这种亿级以上的数据量的处理时才真正的对所谓的性能优化有所了解和学习。采用的是传统的 IOE 架构,在日常工作中经常因程序运行性能问题而需分析和优化 Oracle 的执行计划、索引等问题。随着公司业务量增长和前端数据结构方式变更,数据量猛增,慢慢的 Oracle 已经表现得非常吃力。平时的运维成本也逐步增加(最主要是调优)。因此打算引入 Hadoop 来解决其中一部分非常耗时和重要的分析型计算。
本文采用 RedHat Linux 6.5 32 位操作系统安装最新版本的 Hadoop 2.7.3.(这里一开始就隐藏了一个天坑,后续会介绍)
1、安装 Redhat6.5
1、按照正常步骤安装好 Redhat6.5(选择 base server,mini 后面需要手动安装的程序包太多,Desktop 安装了太多无用的程序包)
2、安装完只有需要配置自动挂载安装镜像文件,然后配置 yum 本地库指向挂载目录。具体步骤:http://www.linuxidc.com/Linux/2016-11/136701.htm(可解决后面程序需要安装的软件包,此步骤不是 hadoop 安装成功的必要条件,可以在需要安装的时候手动挂载)
更多参考:
CentOS7 搭建本地 yum 源服务器 http://www.linuxidc.com/Linux/2016-07/133362.htm
yum 的配置文件说明 http://www.linuxidc.com/Linux/2013-04/83298.htm
RedHat 6.1 下安装 yum(图文) http://www.linuxidc.com/Linux/2013-06/86535.htm
YUM 安装及清理 http://www.linuxidc.com/Linux/2013-07/87163.htm
CentOS 6.4 上搭建 yum 本地源 http://www.linuxidc.com/Linux/2014-07/104533.htm
2、安装 JDK
1、JDK 版本需要在 1.7+,本文安装的是 JDK1.7
安装步骤:
cd /usr
mkdir java
a)将 jdk-8u60-linux-x64.tar.gz 拷贝到 java 目录下
b)解压 jdk 到当前目录
tar -zxvf jdk-8u60-linux-x64.tar.gz
c)安装完毕为他建立一个链接以节省目录长度
ln -s /usr/java/jdk1.8.0_60/ /usr/jdk.7
d). 编辑配置文件,配置环境变量
vim /etc/profile
添加如下内容:
JAVA_HOME=/usr/jdk
CLASSPATH=$JAVA_HOME/lib/
HADOOP_HAOME
PATH=$PATH:$JAVA_HOME/bin:$
export PATH JAVA_HOME CLASSPATH
e)执行 source profile
f) 测试 java 安装是否成功 java -version
3、配置 ssh
在 hadoop 分布式安装(包括伪分布式)过程中需要使用 ssh 免密码登录,因此需要配置 ssh。这步骤如下:
#修改 ssh 配置
/etc/ssh/sshd_conf
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
$ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa– 生成两个文件 id_rsa 和 id_rsa.pub
$cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys– 这个名字和配置文件中的名字一致
$chmod g-w authorized_keys– 修改一下 authorized_keys 的权限
$ssh localhost– 测试 OK
4、配置环境变量
# JAVA_HOME SET
JAVA_HOME=/usr/jdk1.7
CLASSPATH=$JAVA_HOME/lib/
HADOOP_HOME=/app/hadoop-2.7.3
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
HADOOP_OPTS=’-Djava.library.path=$HADOOP_HOME/lib’
M2_HOME=/app/apache-maven-3.2.5
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME:/lib:$CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$M2_HOME/bin
MAVEN_OPTS=’-Xms256m -Xmx512m’
export PATH JAVA_HOME MAVEN_OPTS CLASSPATH HADOOP_COMMON_LIB_NATIVE_DIR HADOOP_OPTS M2_HOME CLASSPATH JRE_HOME
– 其中以下两句是为了解决安装过程中出现的 Could not resolve hostname now.: Name or service not kn 问题
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib”
5、配置 hadoop
hadoop 有三种运行模式:
a)独立(或本地)模式:无需运行任何守护进程, 所有程序都运行在同一个 JVM 上面。适用于 MapReudce 的测试和调试,在开发阶段比较适合.
b)伪分布式:Hadoop 的守护进程会运行在本地机器上,模拟一个小型集群。
c)全分布式: Hadoop 守护进程运行在一个集群上面,此模式属于生产环境配置。
本文采用的是伪分布式配置,需要配置以下三个文件($hadoopHome/etc/hadoop):
core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:8021</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
6、格式化 HDFS 文件系统
执行:hadoop namenode -format
7、启动 HDFS 和 MapReduce
执行:start-dfs.sh
start-mapred.sh
此处执行 start-dfs.sh 的时候就会出现文章开头所说的天坑,警告信息如下:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
问题原因:因 hadoop 的 2.7 版本的动态链接库文件是 64 位的,而我的虚拟机装的是 32 位。查看动态链接库文件信息如下:
[hadoop@hadoop native]$ file libhadoop.so.1.0.0
libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
解决方法:
1、在本地编译 hadoop,然后用本地编译的动态链接文件替换掉。或者有其他方法欢迎指教。本地编译方法见我另一篇文章介绍:
2、直接用本地编译的 tar 包解压,使用本地变异的包
3、但是仍有此警告,程序可以正常运行(重新编译之前不可用)
8、验证是否安装成功:
http://localhost:8088/cluster
http://localhost:50070/dfshealth.html#tab-overview
可以正常访问则,可以开始你的 hadoop 之旅了。
下面关于 Hadoop 的文章您也可能喜欢,不妨看看:
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
CentOS 6.3 下 Hadoop 伪分布式平台搭建 http://www.linuxidc.com/Linux/2016-11/136789.htm
Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
Hadoop 2.6.0 HA 高可用集群配置详解 http://www.linuxidc.com/Linux/2016-08/134180.htm
Spark 1.5、Hadoop 2.7 集群环境搭建 http://www.linuxidc.com/Linux/2016-09/135067.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137605.htm