设为首页 收藏本站
查看: 594|回复: 0

[经验分享] Hadoop 单节点的部署(来自翻译官方文档和自我实践)

[复制链接]
发表于 2016-12-11 10:09:34 | 显示全部楼层 |阅读模式
  英文参考文档链接如下:
  http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html
  这篇文章描述了单节点的伪分布式hadoop部署。下面是我根据官方文档进行自我部署测试 。
  一、写在前面的话
  hadoop包括的东西很多,而且文档上的东西也不一定全都正确 ,再加上运行环境的多样化,学习中途出现各种问题是很常见的,遇到问题的时候,先自己花点时间想想能不能自己解决,如果不能再上网找方法,既然都准备要学习它了,就要有自信,hadoop在牛逼也是一种技术,是技术就没有学不会的。
  还有我的个人建议是不要一上来就开始跑hadoop这种hello级别的例子,先自己了解下hadoop是什么,主要包括哪些方面,这些东西又是干什么的。这时候我们不知道具体操作,但是心里有点概念会让自己对后面学习过程中的一些步骤多些理解。
  二、说说环境
  操作系统:看官网推荐的是ubuntu系统,所以我用的是64bit 的ubuntu12.10这个版本
  必要软件:ssh 用 apt-get install ssh
  rsync 用 apt-get install rsync
  java 用 orache 的 64bit 7u55版本,安装方法见链接
  hadoop 上官网下2.6.0的stable版本
  三、准备工作
  将下载的hadoop 解压到/usr/local/下

cp hadoop-2.6.0.tar /usr/local
cd /usr/local
tar xf hadoop-2.6.0.tar
    修改配置文件,我用的是vim,也可以用其他的工具,安装的话也是apt-get install vim
vim /usr/local/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
    在26行,修改java home的路径 
export JAVA_HOME="/usr/local/java/jdk1.7.0_55"
    我没有找到 HADOOP_PREFIX的内容所有没有加下面的内容
export HADOOP_PREFIX=/usr/local/hadoop
    运行hadoop应该会有下面的一些命令提示
root@mtang-VirtualBox:/usr/local/hadoop-2.6.0/bin# ./hadoop
Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
fs                   run a generic filesystem user client
version              print the version
jar <jar>            run a jar file
checknative [-a|-h]  check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath            prints the class path needed to get the
credential           interact with credential providers
Hadoop jar and the required libraries
daemonlog            get/set the log level for each daemon
trace                view and modify Hadoop tracing settings
or
CLASSNAME            run the class named CLASSNAME
   四、独立的hadoop
  独立的就是没有配置任何分布式特性的,默认的就是这样,这比较方便调试,下面的命令可以让给你看到点输出信息。

$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
$ cat output/*
   五、伪分布式hadoop
  5.1 修改配置文件
  将下面的内容拷贝到你的配置文件/usr/local/hadoop-2.6.0/etc/hadoop/core-site.xml ,刚打开的时候应该是自由<configuration>,中间是空的。

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
 如上,拷贝下面内容到配置文件/usr/local/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
   5.2 设置免密码的ssh
  首先试下下面的命令ssh localhost看是否需要密码,如果要那么执行下面的命令,$表示一行的开头,不要拷贝进去了。

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
       上面的命令是生成一个证书,然后通过这个证书完成免密码ssh连接  5.3 开始执行吧
  1. 格式化文件系统,这次我们用到了HDFS了,HDFS是一种分布文件系统,对分布式文件系统不了解的就先把它当作本地的文件系统,FAT32,NTFS之类的,再简单点说就是你的硬盘,这次的任务是格式化你的"硬盘“

/usr/local/hadoop-2.6.0/bin/hdfs namenode -format
     2.接下来我们启动我们的namenode,namenode是hdfs的内容

/usr/local/hadoop-2.6.0/sbin/start-dfs.sh
     3. 这时候我们可以通过浏览器查看namenode的界面,在浏览器输入下面内容,当然如果不是本机localhost换成机器IP吧。

http://localhost:50070/
     4. 在dfs上创建目录吧,用来存放待处理的文件的

/usr/local/hadoop-2.6.0/bin/hdfs dfs -mkdir -p /user/root/input
  5. 把本地待处理的文件拷贝到dfs上的

/usr/local/hadoop-2.6.0/bin/hdfs dfs -put /usr/local/hadoop-2.6.0/etc/hadoop/* /user/root/input
   6. 接下来我们就可以运行期待的已久的hadoop分析任务了,注意是一行

/usr/local/hadoop-2.6.0/bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
    如果你多次运行上面的命令碰巧出现下面的错误的话
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/root/output already exists
    你需要先删除这个文件夹
/usr/local/hadoop-2.6.0/bin/hdfs dfs -rm -r /user/root/output
   7. 好了,运行完了,把结果拷贝到本地磁盘看看

/usr/local/hadoop-2.6.0/bin/hdfs dfs -get /user/root/output /root/output
  看看结果

cat /root/output/*
   其实也可以不用拷贝,直接在hfs上看的
/usr/local/hadoop-2.6.0/bin/hdfs dfs -cat /user/root/output/*


    我的结果是这样的
6dfs.audit.logger
4dfs.class
3dfs.server.namenode.
2dfs.period
2dfs.audit.log.maxfilesize
2dfs.audit.log.maxbackupindex
1dfsmetrics.log
1dfsadmin
1dfs.servers
1dfs.replication
1dfs.file
   

    8. 别忘了擦屁股,dfs关了

/usr/local/hadoop-2.6.0/sbin/stop-dfs.sh
    

六、YARN的伪分布式hadoop

    YARN 作为第二代map/reduce框架,是必然要替代第一代的,这里我们不管,既然是map/reduce的替代,现在我们运行应该就是替换map/reduce相关的内容,其他的不用动吧。

注:下面的路径我不写全了,假设已经cd到/usr/local/hadoop-*下了

    1. 我们修改配置文件,etc/hadoop/mapred-site.xml,我们可能找不到这个文件,但是我们有mapred-site.xml.template,先拷贝一份出来吧

cp mapred-site.xml.template mapred-site.xml
   然后加入下面内容

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
 然后继续修改 etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>


   2. 然后启动

sbin/start-yarn.sh
    3. 打开网页可以查看ResourceManager 的页面

http://localhost:8088/
    4. 运行mapreduce的任务

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'
    当你运行的时候可能会遇到Connect refused 的错误,提示服务器9000拒绝,然后我们回到前面看看哪里用了9000端口会发现DFS用了,所以继续定位重新启动dfs ,etc/hadoop/start-dfs.sh的日志会发现datanode没有启动,而且会有java.io.IOException: Incompatible clusterIDs的错误,上网查了下是因为做format 的时候没有清空dataNode下的data目录引起的,一个可行的解决方法是手动删除data目录下所有文件。
看下datanode 的日志 ,一般在%hadoop_home%/logs/下,我们会发先我们的datanode的data目录为/tmp/hadoop-root/dfs/data,手动删除即可。

P.S 如果不想这么麻烦就把tmp下的全删除吧,反正我的只有hadoop 相关的内容,当然这个路径是可以设置的,然后从hdfs format开始,again。(亲测可用,来来回回好多遍命令基本都记住了,format namenode ,启动hdfs,创建目录拷贝文件,启动yarn,运行map/reduce任务,查看结果,关闭hdfs和yarn服务,so easy).

    5. 停止

sbin/stop-yarn.sh
    6. 看结果,方法和以前一样

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-312666-1-1.html 上篇帖子: 大数据框架hadoop的IPC应用场景之getNewJobId 下篇帖子: Hadoop-0.1版本FSNamesystem类笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表