Hadoop总结
谁说大象不能跳舞,大象能跳舞啊!!!!不过跳起来是笨重的、、、、、、
概述
Hadoop 是一个性能、可靠性、可扩展性、可管理性的软件,为以后的分布式打下了基础,接下来咱们好好的深刨一下这个有意思的框架。
因为MR是进程集运算,写代码的时候不注意线程安全的问题。
Hadoop 使用的是socket长连接,原理是一直保持着心跳,传送数据,再心跳的一个过程,短连接则是请求一次之后就关闭了,步骤是:连接→数据传输→关闭连接,例如银行就是使用的短连接。
CDH
CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
详细的使用请查看:http://blog.csdn.net/xfg0218/article/details/52490971
和http://blog.csdn.net/xfg0218/article/details/54880533
安装Hadoop2.6.4 非Zookeeper集群版
此安装的是hadoop2.x版本,所以有YAEN的概念
1-1)、安装
[root@hadoop1 hadoop]# tar -zxvf hadoop-2.6.4.tar.gz
[root@hadoop1 hadoop-2.6.4]# cd etc/hadoop/
1-2)、修改配置文件
A)、修改core-site.xml
[root@hadoop1 hadoop]# vi core-site.xml
加入以下配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/tmpe</value>
</property>
</configuration>
B)、修改hadoop-env.sh
[root@hadoop1 hadoop]# vi hadoop-env.sh
加入以下配置:
export JAVA_HOME=/home/jdk/jdk1.7.0_76
C)、修改hdfs-site.xml
[root@hadoop1 hadoop]#vi hdfs-site.xml
加入以下配置:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/data/name</value>
</property>
# 数据保存路径
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>
</property>
# 设置副本数
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
# http的请求地址
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop1:50090</value>
</property>
# 管理权限的,如果这只为false可在win端直接把数据保存到HDFS上
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
D)、修改slaves
[root@hadoop1 hadoo]# cat slaves
加入以下配置:
hadoop1
hadoop2
hadoop3
E)、修改mapred-env.sh
[root@hadoop1 hadoop]# cat mapred-env.sh
加入以下配置:
export JAVA_HOME=/home/jdk/jdk1.7.0_76
F)、修改yarn-site.xml
[root@hadoop1 hadoop]# vi yarn-site.xml
加入以下配置:
<configuration>
# 设置namenode的节点的机器
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
G)、修改yarn-env.sh
[root@hadoop1 hadoop]# vi yarn-env.sh
添加JAVA路径
export JAVA_HOME=/home/jdk1.7
H)、创建文件夹
[root@hadoop1 hadoop]# mkdir - p /home/tmpe
[root@hadoop1 hadoop]# mkdir -p /home/hadoop/data/name
[root@hadoop1 hadoop]# mkdir -p /home/hadoop/data/data
1-3)、传送到其他的机器上
[root@hadoop1 local]# scp -r hadoop-2.6.4/ hadoop2:$PWD
[root@hadoop1 local]# scp -r hadoop-2.6.4/ hadoop3:/usr/local/
1-4)、Hadoop启动命令
在hadoop1集群的机器上格式化数据
[root@hadoop1 bin]# hadoop namenode -fromat
启动全部的进程:
[root@hadoop1 sbin]# ./start-all.sh
或者单独的启动程序:
[root@hadoop1 sbin]# ./start-dfs.sh
[root@hadoop1 sbin]# ./start-yarn.sh
1-5)、集群启动
[root@hadoop1 sbin]# ./start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hadoop1]
hadoop1: starting namenode, logging to
hadoop1: starting datanode, logging to
hadoop3: starting datanode, logging to
hadoop2: starting datanode, logging to
Starting secondary namenodes [hadoop1]
hadoop1: starting secondarynamenode, logging
starting yarn daemons
starting resourcemanager, logging to
hadoop3: starting nodemanager, logging to
hadoop2: starting nodemanager, logging to
hadoop1: starting nodemanager, logging to
从上面的启动过程可以看出如果机器上有namenode先回启动namenode没有namenode则会启动datanode最后再启动secondarynamenode
1-6)、查看进程
查看进程:
[root@hadoop1 ~]# jps
7996 DataNode
8366 NodeManager
8733 Jps
8251 ResourceManager
[root@hadoop2 ~]# jps
5575 NodeManager
5783 Jps
5466 SecondaryNameNode
5369 DataNode
[root@hadoop3 ~]# jps
4615 Jps
4298 DataNode
4441 NodeManager
1-7)、启动脚本
[root@hadoop1 start_sh]# cat hadoop.sh
cd /usr/local/hadoop-2.6.4/sbin
./start-all.sh