Hadoop之最佳实践
关键字:Hadoop之最佳实践
如今ApacheHadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到,但是他们都有什么功能,为什么会需要奇怪的名字(如Oozie,ZooKeeper、Flume)。
Hadoop带来了廉价的处理大数据(大数据的数据容量通常是10-100GB或更多,同时数据种类多种多样,包括结构化、非结构化等)的能力。但这与之前有什么不同?
现今企业数据仓库和关系型数据库擅长处理结构化数据,并且可以存储大量的数据。但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类,同时这种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是Hadoop与传统数据处理方式最大的不同。
本文就重点探讨了Hadoop系统安装配置和简单使用部分!
Hadoop安装之前的准备工作:
1.JAVA1.6.x(sun兼容性更好),1.5.x也OK
2.ssh
安装ssh
$sudoapt-getinstallssh
$sudoapt-getinstallrsync
下载Hadoop
从http://hadoop.apache.org/core/releases.html下载最近发布的版本
最好为hadoop创建一个用户:
比如创建一个group为hadoopuser为hadoop的用户以及组
$sudoaddgrouphadoop
$sudoadduser--ingrouphadoophadoop
解压下载的hadoop文件,放到/home/hadoop目录下名字为hadoop
配置JAVA_HOME:
gedit~/hadoop/conf/hadoop-env.sh
将
Java代码
#Thejavaimplementationtouse.Required.
#exportJAVA_HOME=/usr/lib/j2sdk1.5-sun
修改成java的安装目录:(我的是:/usr/lib/jvm/java-6-sun-1.6.0.15)
#Thejavaimplementationtouse.Required.
exportJAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15
现在可以使用单节点的方式运行:
$cdhadoop
$mkdirinput
$cpconf/*.xmlinput
$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'
$catoutput/*
Pseudo-distributed方式跑:
配置ssh
$su-hadoop
$ssh-keygen-trsa-P""
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):
Createddirectory'/home/hadoop/.ssh'.
Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.
Thekeyfingerprintis:
9d:47:ab:d7:22:54:f0:f9:b9:3b:64:93:12:75:81:27hadoop@ubuntu
让其不输入密码就能登录:
hadoop@ubuntu:~$cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
使用:
$sshlocalhost
看看是不是直接ok了。
hadoop配置文件:
conf/core-site.xml
Java代码
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl"href="configuration.xsl"?>
<!--Putsite-specificpropertyoverridesinthisfile.-->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-datastore/hadoop-${user.name}</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hadoop.tmp.dir配置为你想要的路径,${user.name}会自动扩展为运行hadoop的用户名
conf/hdfs-site.xml
Xml代码
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
dfs.replication为默认block复制数量
conf/mapred-site.xml
Xml代码
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
执行
格式化分布式文件系统:
$bin/hadoopnamenode-format
启动hadoop:
Java代码
$bin/start-all.sh
可以从
NameNode-http://localhost:50070/
JobTracker-http://localhost:50030/
查看NameNode和JobTracker
运行例子:
$bin/hadoopfs-putconfinput
$bin/hadoopjarhadoop-*-examples.jargrepinputoutput'dfs[a-z.]+'
lookattherunresult:
$bin/hadoopfs-getoutputoutput
$catoutput/*
大家可参考:1、http://hadoop.apache.org/common/docs/current/quickstart.html
2、http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_%28Single-Node_Cluster%29
欢迎一起交流学习,谢谢大家.......