1.Hadoop要解决2个问题
海量数据的存储--HDFS
海量数据的分析--MapReduce
HDFS的设计目标
Very large files
Streaming data access
Commodity hardware
HDFS不适合的场景
Low-latency data access
Lots of small files
Multiple writers,arbitrary file modifications
2.宿主机(windows)和客户机(虚拟机中的linux)网络连接方式
2.1 host-only 宿主机和客户机单独组网
好处:网络隔离
坏处:虚拟机与其他服务器之间不能通信
2.2 bridge桥接 宿主机和客户机在同一个局域网中
好处:同一个局域网可以互相访问
坏处:不安全
3.hadoop1.1.2的伪分布安装(最好使用root登录操作)
3.1 设置静态IP
在centOS桌面右上角的图标上,右键修改
重启网卡,执行service network restart
验证是否成功:执行命令ifconfig
3.2 修改主机名
修改当前回话中的主机名为hadoop,执行命令hostname hadoop
修改配置文件中的主机名为hadoop,执行命令vi /etc/sysconfig/network
验证:重启机器
3.3 把hostname和IP绑定
执行命令vi /etc/hosts,增加一行内容:192.168.80.100 hadoop
保存退出
验证:ping hadoop
3.4 关闭防火墙
service iptables status查看防火墙
service iptables stop 关闭防火墙
关闭防火墙自动运行:chkconfig iptables off
验证:chkconfig --list | grep iptables
3.5 SSH免密码登录
查看是否安装了openssh: rpm -qa|grep openssh
查看SSH状态:chkconfig --list | grep ssh
启动sshd服务:service sshd start
免密码登录设置方法
<1>执行命令 ssh-keygen -t rsa 产生密钥,位于~/.ssh文件夹中
<2>执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
验证:ssh localhost
(一般登录格式:ssh 用户名@ip)
附:linux下怎么使SSH服务开机自动运行?
<1>首先查看是否安装ssh的相应包
rpm -aq|grep ssh
<2>如果已经安装查看相关的port是否打开
netstat -an|grep 22
<3>设置随机启动
通过ntsysv 选中sshd服务
也可以通过chkconfig也设置
chkconfig -- level 3 sshd on
<4>当这些部分都做好后重新reboot后,还是不能通过ssh联上去。
看一个系统本身的防火设置。
可以手工清空一个规则
iptables -F回车
iptables -t nat -F回车
如果系统端口与sshd服务已启动。
则可以在别的机器上通过ssh连上。
重置SSH公钥:
默认情况下服务器提供的公钥与自己的私钥都放置于 /etc/ssh/ssh_host*
rm /etc/ssh/ssh_host*
/etc/init.d/sshd restart
3.6 安装JDK(推荐1.6版本)
<1>执行命令rm -rf /usr/local/* 删除该目录下所有内容
<2>使用winscp把jdk等文件从windows复制到/usr/local目录下
<3>执行命令 chmod u+x jdk-6u45-linux-i586.bin 赋予该文件执行权限
<4>执行./jdk-6u45-linux-i586.bin解压缩
<5>执行命令 mv jdk1.6.0_24 jdk1.6 把文件夹重命名为简洁一点的名字
<6>执行命令 vi /etc/profile 设置环境变量,增加两行内容
export JAVA_HOME=/usr/local/jdk1.6
export PATH=.:$JAVA_HOME/bin:$PATH
保存退出,执行命令source /etc/profile 让设置立即生效
验证:java -version
3.7 安装hadoop
<1>执行命令 tar -zxvf hadoop-1.1.2.tar.gz进行解压缩
<2>执行命令 mv hadoop-1.1.2 hadoop 重命名
<3>执行命令 vi /etc/profile设置环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
保存退出,执行命令source /etc/profile 让设置立即生效
<4>修改hadoop的配置文件,位于$HADOOP_HOME/conf目录下
修改4个配置文件,分别是hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml
【hadoop-env.sh的修改内容如下】
export JAVA_HOME=/你的路径/
【core-site.xml的修改内容如下】
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
<description>change your own hostname</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
【hdfs-site.xml的修改内容如下】
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
【mapred-site.xml 的修改内容如下】
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop:9001</value>
<description>change your own hostname</description>
</property>
</configuration>
<5>执行命令hadoop namenode -format 对hadoop进行格式化
<6>执行命令start-all.sh启动
<7>验证:(1)执行命令jps,发现5个java进程:NameNode、SecondaryNameNode、JobTracker、TaskTracker、DataNode
(2)通过浏览器 http://hadoop:50070和http://hadoop:50030
去除hadoop启动的警告信息:在配置文件增加一个环境变量:export HADOOP_HOME_WARN_SUPPRESS=1
3.8 NameNode没有启动成功
(1)没有格式化
(2)配置文件要记得改主机名
(3)hostname与IP没有绑定
(4)SSH的免密码登录没有成功
3.9 多次格式化hadoop也会错误
解决方法:删除/usr/local/hadoop/tmp文件夹,重新格式化
4.对HDFS的操作方式
hadoop fs -help ls 查找ls命令的帮助
hadoop fs -ls /查看hdfs的根目录下的内容
hadoop fs -lsr /递归查看hdfs的根目录下的内容
hadoop fs -mkdir /zpc 在hdfs上创建文件夹zpc
hadoop fs -put <linux source path><hdfs destination> 把数据从Linux上传到hdfs的特定路径中
(如果上传到一个不存在的目录,则会以那个名称为文件名)
hadoop fs -get <hdfs source path><linux destination> 把数据从hdfs下载到linux的特定路径下
hadoop fs -text <hdfs下的文件路径> 查看hdfs中的文件
hadoop fs -rm <文件路径> 删除HDFS中的文件
hadoop fs -rmr <文件目录路径> 删除HDFS中的文件目录
5.RPC(remote procedure call)
不同的java进程间的对象方法的调用
一方称作服务器端(server),一方称作客户端(client)
server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端
RPC是hadoop框架运行的基础
6.通过RPC例子获得的认识:
6.1 服务器端提供的对象必须是一个接口,该接口要继承接口VersionedProtocol
6.2 客户端能够调用的对象中的方法必须位于对象的接口中
Hadoop笔记(一)