hadoop伪分布式搭建
(想要学习hadoop需要有linux基础否则。。。。。。。。)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。(hadoop也有自己的数据库,也就是传说中的NoSQL)

一个简单的HDFS系统图片。
1)例如这个时候客户端有一个400M的文件想要上传到HDFS系统上,那么HDFS系统会把这400M文件拆分成四份分别放在A,B,C不同的服务器上,但是没有E那么第四份放在哪个服务器上那?那个服务器的容量大就会放在那个上面。
那么这个时候想要取这个文件的时候,分成四份的数据如何才能找到那?
2)在存储的时候会在D服务器上创建映射文件,所以在每次查找的时候,我们都会先从D服务器上找到文件散落到的服务器地址到客户端,然后我们根据映射给我们的地址再到不同的服务器上取相应的数据。
开始安装:
1.首先安装一个VMware (下载路径:https://pan.baidu.com/s/1bo05KOv 密码:8cu7 教程自己百度吧。)
2。下载一个Linux镜像(下载路径:https://pan.baidu.com/s/1dEKeDax 密码:uffz)
3.把下载的Linux镜像导入VMware中。(如果要用图形界面内存最好为2G)
4.导入之后,打开你的Edit->>Virtual netWork Editor界面找到你的Type为NAT的。然后点击 NAT Settings


5.设置好后就可以进入你的虚拟机了,密码是:hadoop。
6.修改主机名:vim /etc/sysconfig/network。
7.修改静态IP地址:vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.1.101" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.1.1" ###
8.修改主机名和IP的映射关系 vim /etc/hosts

9.关闭防火墙 然后重启一下。
#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off
10.安装JDK 跟环境变量
1)创建文件夹 mkdir /home/hadoop/app
2)解压文件夹 tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app
3)添加环境变量 vim /etc/profile
4)在文件最后加上
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin
5)刷新配置。 source /etc/profile
11.去官网下载hadoop最新的安装包,把下载好的安装包放在linux的/home/hadoop/app/目录下。
12.配置hadoop的环境变量,sudo vi /etc/profile,然后在最后面加上环境变量,保存。

13.需要修改的五个文件(位置在 hadoop-2.4.1->etc->hadoop)。
第一个:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
第二个:core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://weekend-1206-01:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.4.1/tmp</value>
</property>
第三个:hdfs-site.xml hdfs-default.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
第四个:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)
先用命令把这个文件修改成mapred-site.xml 去掉.template
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
第五个:yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>weekend-1206-01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
14.格式化namenode(是对namenode进行初始化)
hdfs namenode -format (hadoop namenode -format)
启动hadoop
先启动HDFS
sbin/start-dfs.sh
在启动YARN
sbin/start-yarn.sh
当展现出下列几个服务器的时候说明已经成功了

15.访问地址,也可以为域名,自己到hosts下面映射一下就好。
http://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面)

16,这里配置一下ssh免登陆,因为每次都输入密码太麻烦了,现在是一个服务器就要三次。所以配置一下。
#生成ssh免登陆密钥
#进入到我的home目录
cd ~/.ssh
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
在.ssh里面创建一个authorized_keys 命令为:touch authorized_keys
将公钥拷贝到要免登陆的机器上
把公钥id_rsa.pub拷到authorized_keys里面
ssh-copy-id localhost
浙公网安备 33010602011771号