这几天乘着工作之余,学习了一下hadoop技术,跌跌撞撞的几天,终于完成了一个初步的hadoop的安装及测试,具体如下:
动力:工作中遇到的数据量太大,服务器已经很吃力,sql语句运行老半天,故想用大数据技术来改善一下
环境:centos5.11+jdk1.7+hadoop2.5.2
1. 伪分布安装步骤
关闭防火墙
修改ip
修改hostname
设置ssh自动登录
安装jdk
安装hadoop
注:此部分涉及到的Linux操作部分可以再下面的链接中找到,Linux初级操作
2. 安装jdk
用xftp把jdk安装包放到/root/Downloads
tar xzvfjdk-7u67-linux-i586.tar.gz 解压缩
vi/etc/profile 设置环境变量,添加如下3行内容
exportJAVA_HOME=/usr/local/jdk1.7
exportCLASSPATH=/usr/local/jdk1.7/lib
exportPATH=.:$JAVA_HOME/bin:$PATH
source /etc/profile 配置文件立即生效
java –version 验证是否设置成功
3. 安装hadoop
用xftp把hadoop安装包放到/root/Downloads
tar xzvf hadoop-2.5.2.tar.gz 解压缩
vi /etc/profile 设置环境变量,添加并修改如下内容
export JAVA_HOME=/usr/local/jdk1.7
export HADOOP_HOME=/usr/local/hadoop2.5
export CLASSPATH=/usr/local/jdk1.7/lib
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
source /etc/profile 配置文件立即生效
hadoop version 验证hadoop是否配置成功
4. 设置hadoop伪分布模式
上面步骤安装成功后,hadoop处于独立模式即本机模式,本机模式用于开发阶段测试调试MapReduce程序。伪分布模式用于在本机上模拟一个小规模的集群。
修改$HADOOP_HOME/etc/hadoop下的5个配置文件。
(1) 修改core-site.xml,设置namenode主机,hadoop文件系统
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop2.5/tmp</value>
</property>
</configuration>
(2) 修改hdfs-site.xml,设置数据块副本数目
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop2.5/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop2.5/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
(3) 修改mapred-site.xml
[cp mapred-site.xml.template mapred-site.xml]
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(4)修改hadoop-env.sh,设置JAVA_HOME
在hadoop-env.sh中添加,本机中jdk路径
export JAVA_HOME=/usr/local/jdk1.7
(5)修改yarn-site.xml,包含MapReduce启动的配置信息。<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5. 启动hadoop
hdfs namenode –format 格式化HDFS文件系统
注:第一,格式化之后jdk的路径会变成相对路径,需要到hadoop-env.sh中再改成绝对路径;
第二,一定在hadoop安装目录的sbin目录下执行格式化命令!
cd /usr/local/hadoop2.5/sbin 进入sbin目录
start-dfs.sh,start-yarn.sh 启动hadoop
jps 查看Java进程
共涉及5个Java进程,如下图所示:NodeManager、SecondaryNameNode、NameNode、DataNode、 ResourceManager;
6. 浏览器验证
在windows系统中绑定Linux主机名和ip
修改C:\Windows\System32\drivers\etc下的host文件
访问hadoop:50070和hadoop:8088端口
7. 执行测试程序
使用新建的伪分布式平台运行wordcount程序:
echo"Hello World.Hello hadoop." > hello.txt
hadoopfs -mkdir -p input 在hdfs系统上创建文件夹input
hadoopfs –ls 查看文件夹是否创建成功
hadoopfs -put ../hello.txt input 将本地文件上传到hdfs
hadoopfs -ls input 查看文件是否上传成功
hadoopjar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcountinput output 运行wordcount
hadoopfs -ls output 查看运行之后产生的文件
hadoopfs -cat output/part-r-00000 查看运行结果
8.错误记录
1. Q:Java HotSpot(TM) ClientVM warning: You have loaded library/usr/local/hadoop2.5/lib/native/libhadoop.so.1.0.0which might have disabled stack guard. The VM will try to fix the stack guardnow.
A:这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件都是基于32位编译的,运行在64位系统上就会出现上述错误。
方案一:在64位系统上重新编译hadoop;
方案二:在hadoop-env.sh,yarn-env.sh中添加下两行:
|
Export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
9.感想 hadoop2.X跟hadoop1.X区别还是比较大的,可供查阅的资料方面1.x居多,故把自己学习hadoop2.5的过程分享出来,一方面方便自己查阅,另一方面让其他人少走弯路 |
原文地址:http://blog.csdn.net/thinkpadshi/article/details/45720405