D06 Hadoop集群搭建

来源:互联网 发布:淘宝男士帽子专卖店 编辑:程序博客网 时间:2024/04/29 14:17
hadoop的服务器集群的搭建

一、各服务器的jdk安装,环境变量配置.
source  /etc/profile
二、安装hadoop,上传,解压.
配置五个文件:hadoop-env.sh;  core-site.xml;  hdfs-site.xml;  mapred-site.xml;  yarn-site.xml。
三、添加hadoop的环境变量.
并且source  /etc/profile。
四、将本机hadoop拷贝到其他miniServer.并且记得为各台服务器添加hadoop的环境变量。或者将profile也拷贝
五、格式化namenode(是对namenode的格式化)
hdfs namenode -format   (hadoop namenode -format)
六、启动本机作为namenode,查看host:50070。根节点容量情况。应该为0
七、启动各miniServer作为datanode,查看根节点容量情况。应该为各miniServer的容量和。
八、配置免密登陆,以及start-all.sh。配置自动化部署开启关闭脚本!

备注:
先配置 ,后分发。
将namenode格式化。
尝试启动namenode :hadoop-daemon.sh start namenode
修改host :修改所有datanode机器的hosts 添加进namenode的主机名和ip。
修改namenode的配置文件etc/hadoop/slaves 增加进所有datanode的ip或者host。slaves规定datanode,此文件用来自动化启动脚本startall.sh用的
start-dfs.sh :执行启动dfs,并且启动slaves下的各datanode

云计算的三种模式 :基础设施即服务;平台及服务;软件即服务。
基础设施在最下端,平台在中间,软件在顶端。别的软的层可以在这些层上面添加!
基础设施即服务:提供的所需的硬件服务器;平台即服务就是提供管理,维护完整的平台系统;软件即服务:网页服务用作商务和娱乐或者两者都有,属于云计算的一部分!

 集群搭建的相关文件配置:
A:①hadoop-env.sh   第27行添加 export JAVA_HOME=/usr/java/jdk1.7.0_65  //配置Hadoop的工作环境,即java
②core-site.xml  
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 ,主机名及其端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://host:9000</value>
</property>
<!-- 指定hadoop运行时产生数据文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.4.1/tmp</value>
                </property>
(客户端想查找某个文件,首先访问namenode获取文件在datanode上)
③hdfs-site.xml 保存hdfs副本数量,文件在系群里存储的备份。防止down掉,保护数据,默认备份数是3。
   <!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replicatllion</name>
<value>1</value>
</property>
④mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定mapreduce运行在yarn上 --如果不写,默认是在local上,并不是在集群上>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
⑤yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 ,-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>host</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
最后配置完成后,将hadoop拷贝到其他服务器下。相同配置下,指定了namenode是谁,运行环境等。
添加环境变量,配置工作路径。

B:进行格式化,hdfs将大文件分割分配到各个linux服务器下。格式化即生成一个工作目录下的文件夹,namenode的工作路径。
C:启动,namenode指定在host上,只能在host上启动,其他datanode启动一个添加一个。
①在sbin/下,执行hadoop-daemon.sh start namenode--jps显示namenode显示。
hosts:50070,只能看到namenode而没有datanode。
③在datanode服务器上执行hadoop-daemon.sh start datanode,后发现添加了一个datanode。
错误原因:修改各个机器的hosts,以便namenode和datanode连接。总结一下就是电脑以及各个linux都要在hosts上添加ip和主机名。
以上是手动各个启动主机和服务器,实际不方便,要执行一个脚本启动这些机器的节点。
④slaves:指定datanode位置。为了给自动化启动脚本来使用的。该配置文件决定了namenode和datanode是哪个。此时要配置host到各个服务器的免密登陆(在哪个机器上免密登陆,就配置哪个到哪个的)
关闭:stop-dfs.sh  //停止host的namenode;mini1,2的datanode
启动:start-all.sh  //启动各namenode和datanode
配置好环境变量后,直接在主文件夹下直接可以执行其下的.sh文件。
启动后然后http://host:50070  看到NameNode is still loading. Redirecting to the Startup Progress page.等待刷新即可;而后看到容量还是0,等待刷新即可。
经常出现的问题:用户权限,配置修改错误,ssh配置,unknown hosts。

……………………hadoop常用的shell命令……………………
①向datanode传送文件
 执行hadoop fs -ls /   
 出现-rw-r--r--   2 hadoop supergroup         11 2017-06-28 09:48 /jiji.avi
或者从网站上看节点。
此文件blk_1073741825即存储的文件128M才分割存储。
数据data块在文件夹下的data文件夹下而不是hadpdata
②将切割后的数据块拼接成原数据
③单词统计:hadoop fs -mkdir -p /wordcount/input
hadoop下的share/mapreduce  执行 hadoop jar hadoop-mapreduce-examples-2.6.4.jar wordcount /wordcount/input/ /wordcount/output
成功后查看输出文件名,一个标志是否成功;另一个是输出的结果文件
执行hadoop fs -cat /wordcount/output/part-r-00000输出结果文件内容,每个单词的个数,按照空格来区别单词数。
④replication:副本数量

利用JavaAPI来操作HDFS:
电脑安装hadoop:需要配置环境变量和路径,并且无jar下的bin和lib要替换原先目录;在eclipse中还要为该工程项目添加用户库。这是配置eclipse平台来开发hadoop。

原创粉丝点击