Hadoop实战——Hadoop架构思想、伪分布式无密登陆部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongkelee/article/details/51869391

1.准备Linux环境

1.0 配置VMware和windows本地net8网卡IP

点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 -> apply -> ok

回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.1.100 子网掩码:255.255.255.0 -> 点击确定
在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok
-----------------------------------------------------------
####让普通用户具备sudo执行权限
切换到root
然后 vi /etc/sudoers加入一行
root ALL=(ALL)ALL
hadoop ALL=(ALL)ALL


####让Linux服务器在启动时不要启动图形界面
sudo vi /etc/inittab
将启动级别改成3
id:3:initdefault:
-----------------------------------------------------------

1.1 修改主机名

vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=itcast    ###


1.2 修改IP

两种方式:
第一种:通过Linux图形界面进行修改(强烈推荐)
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.101 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply

第二种:修改配置文件方式(屌丝程序猿专用)
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"            ###

改完配置文件后不会自动生效,必须重启linux服务器(reboot)或者重启network服务(sudo service network restart)

1.3 修改主机名和IP的映射关系

vim /etc/hosts

192.168.1.101 itcast

1.4关闭防火墙

#查看防火墙状态
service iptables status
#关闭防火墙
service iptables stop
#查看防火墙开机启动状态
chkconfig iptables --list
#关闭防火墙开机启动
chkconfig iptables off

1.5重启Linux

reboot

2.安装JDK

2.1WinSCP上传文件

上传alt+p 后出现sftp窗口,然后put d:\xxx\yy\ll\jdk-7u_65-i585.tar.gz

2.2解压jdk

#创建文件夹
mkdir /home/hadoop/app
#解压
tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app

2.3将java添加到环境变量中

sudo vi /etc/profile
#在文件最后添加
export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585
export PATH=$PATH:$JAVA_HOME/bin

#刷新配置
source /etc/profile

#测试
java -version 出结果

3.安装hadoop2.4.1

先上传hadoop的安装包到服务器上去/home/hadoop/
注意:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop
伪分布式需要修改5个配置文件

3.1配置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://itcast001:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.4.1/data/</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

vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
    </property>

第五个:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>itcast001</value>
    </property>
<!-- reducer获取数据的方式 -->
    <property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
     </property>
 

第六个:slaves 

指定哪些机器上要启动datanode

itcast001
     

3.2将hadoop添加到环境变量


sudo vi /etc/proflie
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin


source /etc/profile

3.3格式化namenode

(是对namenode进行初始化)

hadoop namenode -format

3.4启动hadoop

先启动HDFS
sbin/start-dfs.sh

再启动YARN
sbin/start-yarn.sh

3.5验证是否启动成功

使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode

http://192.168.1.101:50070 (HDFS管理界面)
http://192.168.1.101:8088 (MR管理界面)

修改笔记本本地C://windows/system32/drivers/hosts文件,添加192.168.2.101 itcast001,就可以域名名称登陆页面

4.配置ssh免登陆

修改主机名IP映射关系配置:sudo vi /etc/hosts
192.168.2.51 spark01

#生成ssh免登陆密钥
#进入到我的home目录
cd ~/.ssh

ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上:scp id_rsa.pub spark01:/home/hadoop
ssh-copy-id localhost

在目标免登陆机器的/home/hadoop/.ssh目录下创建授权列表文件:touch authorized_keys
修改权限:chmod 600 authorized_keys
将拷贝好的公钥,添加到目标免登陆主机的授权列表文件中:cat ../id_rsa.pub >> ./authorized_keys

验证无密码远程登录:ssh spark01

要想让伪分布式集群启动时,不要输密码,应该如下配置:把自己的公钥加到自己的授权列表中即可。

这样,本机的伪分布式hadoop集群,再次启动时,就不需要输入密码了!


5.hdfs和mapreduce初测

1.HDFS shell

1.0查看帮助
hadoop fs -help <cmd>
1.1上传
hadoop fs -put <linux上文件> <hdfs上的路径>
例如:hadoop fs -put jdk-7u65-linux-i586.tar.gz hdfs://itcast001:9000/
1.2查看文件内容
hadoop fs -cat <hdfs上的路径>
1.3查看文件列表
hadoop fs -ls /
1.4下载文件
hadoop fs -get <hdfs上的路径> <linux上文件>

2.使用java接口操作HDFS

见eclipse工程下的demo

3.hadoop通信机制

不同进程之间的方法进行调用

4.HDFS源码分析

FileSystem.get --> 通过反射实例化了一个DistributedFileSystem --> new DFSCilent()把他作为自己的成员变量
在DFSClient构造方法里面,调用了createNamenode,使用了RPC机制,得到了一个NameNode的代理对象,就可以和NameNode进行通信了

FileSystem --> DistributedFileSystem --> DFSClient --> NameNode的代理

5.mapreduce测试

/home/hadoop/app/hadoop2.4.1/share/hadoop/mapreduce 目录
hadoop jar hadoop-mapreduce-examples-2.4.1.jar pi 5 5 (map任务数量:每个map的取样数)

vi test.txt
hello world
hello tom hello kitty
hello angelababy
hadoop fs -mkdir hdfs://itcast001:9000/wordcount
hadoop fs -mkdir wordcount/input
hadoop fs -put test.txt /wordcount/inpout
hadoop jar hadoop-mapreduce-examples-2.4.1.jar wordcount /wordcount/input /wordcount/output(原始数据:结果存放)
hadoop fs -ls /wordcount/output
hadoop fs -cat /wordcount/output/part-r-00000

6.Hadoop实现机制


猜你喜欢

转载自blog.csdn.net/zhongkelee/article/details/51869391
今日推荐