热度 2|
虚拟机防火墙配置:
1、执行命令 service iptables status 验证防火墙是否关闭;
2、修改主机名
JDK安装和配置
2、安装JDK,执行 ./jdk-6u24-linux-i586.bin 命令,之后重命名 mv jdk1.6.0_24/ jdk
3、配置JDK环境变量:
执行 vim /etc/profile 在最后面加上
export JAVA_HOME=/usr/local/jdk
export PATH=.:$PATH:$JAVA_HOME/bin
保存,并执行 source /etc/profile 使其生效
设置DNS解析
1、执行 vi /etc/hosts 在最后面加上
在文本最后追加一行, “192.168.56.102 hadoop0” ,注意 ip 与主机名之间使用空格分开
设置SSH免密码登录
1、ssh -keygen -t rsa 表示使用 rsa 加密方式生成密钥, 回车后,会提示三次输
入信息,我们直接回车即可。
2、执行命令 cd .ssh/进入密钥文件夹。命令“cp id_rsa.pub authorized_keys” 用于生成授权文件。 至此, 配置部分完
成了。
验证SSH密码登陆,执行ssh localhost 登陆。
如果还搞不定,给你个绝招” 删除/etc/udev/rules.d/70-persistent-net.rules 文件,重启
系统”。
配置出错,可以查看/var/log/secure 日志文件,找原因
Hadoop的安装:
3.1、伪分布模式安装
1、执行 cp hadoop-1.1.2.tar.gz /usr/local/.
2、执行 tar -xzvf hadoop-1.1.2.tar.gz 进行解压
3、执行 mv hadoop-1.1.2 hadoop 命令,重命名文件夹
4、配置环境变量,执行 vi /etc/profile 编辑。
在末尾加上:
alias cdha='cd /usr/local/hadoop' //起一别名
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin
执行 source /etc/profile 重置生效
5、修改Hadoop配置文件:
①修改hadoop的JDK配置,在hadoop-env.sh 中将 export JAVA_HOME的#去掉,并修改路径 /usr/local/jdk
②修改hdfs-site.xml文件,添加内容如下:
<property>
<!-- 存储名称节点永久数据的目录的列表 -->
<name>dfs.data.dir</name>
<value>/usr/hadoop-0.20.2/data</value>
</property>
<property>
<!-- 控制日志要写多少份,一个节点一份 -->
<name>dfs.replication</name>
<value>1</value>
</property>
③在mapred-site.xml文件,添加内容如下:
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
④在core-site.xml文件,添加内容如下:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
⑤并修改主机名 vi /etc/hosts vi /etc/sysconfig/network 执行 reboot 重启电脑生效
6、格式化文件系统
执行命令 hadoop namenode -format 格式化系统。
7、启动,执行 start-all.sh ,并用jps 查看hadoop进程
关闭hadoop命令 ,执行 stop-all.sh 。
第二种 分别启动HDFS和MapReduce。start-dfs.sh 单独启动hdfs、通过jps看到 NameNode、DataNode、SecondaryNameNode 已经启动,该命令适合于只执行 hdfs
存储不使用 MapReduce 做计算的场景。关闭的命令就是 stop-dfs.sh 了。
第三种,分别启动各个进程:
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh start jobtracker
hadoop-daemon.sh start tasktracker
8、通过浏览器查看hadoop运行情况
hadoop:50070
hadoop:50030
9、运行简单的MapReduce计算
执行命令 hadoop jar hadoop-examples-1.1.2.jar
运行wordcount列子,执行命令 hadoop jar hadoop-examples-1.1.2.jar wordcount /README.txt /wordcountoutput
查看输出结果 hadoop fs -text /wordcountoutput/part-r-0000
10、去除hadoop启动中的警告信息:
在/etc/profile中 ,执行vi /etc/profile 添加 export HADOOP_HOME_WARN_SUPPRESS=1 保存退出,
执行 source /etc/profile 生效
3.2 分布模式安装
3.2.1 集群的架构和拓扑图
主机名 机器 IP 用途 描述
hadoop0 192.168.1.240/24 namenode/secondaryNamenode/jobTracker 64 位 rhel6,jdk6IntelC6002*(Xeon E5-2620 2GHz)/64GB/12TB
hadoop1 192.168.1.241/24 datanode/taskTracker 64 位rhel6,jdk6IntelC6002*(Xeon E5-2620 2GHz)/64GB/12TB
3.2.2. 安装步骤
可以在原来的伪分布基础上安装。
请在各节点检查以下配置:
1) 防火墙是否永久关闭
2) 静态 ip 是否设置
3) 主机名称是否设置
4) /etc/hosts 是否添加了所有节点的 ip 与主机名映射
5) 各节点的 ssh 是否可以免密码登录自己的主机名
以上检查如果读者没有通过,请参考前面的配置说明进行
3.2.2.1. 集群间 SSH 免密码登录。可通过ssh免密码登陆:
在节点 hadoop0 上执行,以下命令,执行 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop1
在节点 hadoop1 中执行以下命令, 执行 ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop0
3.2.2.2. 配置/etc/hosts
把节点 192.168.1.241 的 hostname 修改为 hadoop1.
在节点 hadoop0 的/etc/hosts 文件中新增以下两行:
192.168.1.240 haodop0
192.168.1.241 haodop1
3.2.2.3. 在其他节点安装 jdk 和 hadoop
在节点 hadoop0 执行命令如下:
第一条命令的目的是把 jdk 文件夹复制到节点 hadoop1 的/usr/local/目录下;
第二条命令的目的是把 hadoop 文件夹复制到节点 hadoop1 的/usr/local/目录下;
第三条命令的目的是把/etc/profile 文件复制到节点 hadoop1 的/etc/目录下;
第四条命令的目的是把/etc/hosts 文件复制到节点 hadoop1 的/etc/目录下;
ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop1
ssh-copy-id -I ~/.ssh/id_rsa.pub hadoop0
scp –rq /usr/local/jdk hadoop1:/usr/local
scp –rq /usr/local/hadoop hadoop1:/usr/local
scp –rq /etc/profile hadoop1:/etc
scp -rq /etc/hosts hadoop1:/etc
ssh hadoop1
source /etc/profile
exit
192.168.1.240 haodop0
3.2.2.4. 配置集群核心文件
hadoop 的配置文件 slaves,位于 conf 目录下,里面存储着 datanode 和 tasktracker
运行的节点名称。现在修改该文件,把内容 localhost 删掉,增加 hadoop1. 如下:
haodop1
修改后,意味着在节点 hadoop1 运行 datanode 和 tasktracker 节点。
3.2.2.5. 格式化文件系统
把新安装的 hadoop 系统,理解为买了一块新硬盘。我们新买的硬盘,只有格式化才可
以使用。 hadoop 的文件系统也是如此。
在节点 hadoop0 中执行命令: hadoop namenode -format。
格式化整个 hadoop 集群的文件系统。
3.2.2.6. 启动集群
在节点 hadoop0 中执行命令: start-all.sh
3.2.2.7. 验证
虽然我们执行命令“start-all.sh” , 可以看到很多输出信息, 但是并不意味着, hadoop
集群启动成功了,只是表示开始启动了,是否启动成功,需要我们自己判断一下。
在节点 hadoop0 中执行 jps,可以观察到 NameNode、 SecondaryNameNode、 JobTracker
三个 java 进程。
在节点 hadoop1 中执行 jps,可以观察到 DataNode、 TaskTracker 两个 java 进程。
如果看到这些信息,表明确实启动成功了。
3.3. Hadoop 的常见启动错误。当使用 hadoop 发现有问题时,首先使用 jps 命令查看启动的节点是否正确,然后再去查看日志文件。
①设置主机名错误
看日志,会发现下面的错误
ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.UnknownHostException:Invalid hostname for server: master
这是由于主机名设置错误造成的,请检查配置文件中关于主机名的设置,是否正确。
首先使用 hostname 命令查看主机名是否正确;
然后使用 more /etc/sysconfig/network 命令查看主机名是否记录在文件中;
最后使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置。
②ip 设置错误
看日志,发现下面的错误
ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.BindException: Problem
binding to book0/192.168.1.100:9000 : Cannot assign requested address
这是由于 ip 地址设置错误引起的,请检查主机的 ip 设置与配置文件的 ip 设置是否一致。
使用 more /etc/hosts 命令查看 ip 与主机名的映射是否设置。
③hostname 不能带有下划线,不能数字开头
hostname 含有下划线,也会造成启动失败。
启动完成后, 一定使用 jps 命令查看 5 个节点是否全部成功启动。 如果哪个节点没有启动,请查看对应的 log 日志。日志的默认目录是$HADOOP_HOME/logs。
④多次执行 hadoop 格式化
现象:在 Hadoop-root-datanode-master.log 中有如下错误:
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:Incompatible namespaceIDs in
原因: 每次 namenode format 会重新创建一个 namenodeId, 而 dfs.data.dir 参数配置的目录中包含的是上次 format 创建的 id,
和 dfs.name.dir 参数配置的目录中的 id 不一致。namenode format 清空了 namenode 下的数据, 但是没有清空 datanode 下的数据, 导致启动时失败,
所要做的就是每次 fotmat 前, 清空 dfs.data.dir 参数配置的目录。重新格式化 hdfs的命令。
⑤防火墙没有关闭
从本地往 hdfs 文件系统上传文件,出现如下错误:
hadoop fs -put CHANGE.txt /wordcount
问题最有可能就是防火墙没有关闭, 导致节点 DataNode 与节点 NameNode 通信失败。
验证防火墙状态: service iptables status 命令关闭防火墙。重启操作系统时,防火墙有可能重启,可以关闭自动重启功能。使用 chkconfig iptables off 关闭。
⑥安全模式导致的错误
错误提示如下:
org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode
在分布式文件系统启动的时候, 开始的时候会有安全模式, 当分布式文件系统处于安全
模式的情况下, 文件系统中的内容不允许修改也不允许删除, 直到安全模式结束。 安全模式
主要是为了系统启动的时候检查各个 DataNode 上数据块的有效性,同时根据策略必要的复
制或者删除部分数据块。 运行期通过命令也可以进入安全模式。 在实践过程中, 系统启动的
时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
如果着急的话, 可以执行 hadoop dfsadmin – safemode leave 命令关闭安全模式。
1.对hdfs的操作方式:hadoop fs xxx
hadoop fs -ls / 查看hdfs的根目录下的内容的
hadoop fs -lsr / 递归查看hdfs的根目录下的内容的
hadoop fs -mkdir /d1 在hdfs上创建文件夹d1
hadoop fs -put <linux source> <hdfs destination> 把数据从linux上传到hdfs的特定路径中
hadoop fs -get <hdfs source> <linux destination> 把数据从hdfs下载到linux的特定路径下
hadoop fs -text <hdfs文件> 查看hdfs中的文件
hadoop fs -rm 删除hdfs中文件
hadoop fs -rmr 删除hdfs中的文件夹
hadoop fs -ls hdfs://hadoop0:9000/ --> hadoop fs -ls /
2.HDFS的datanode在存储数据时,如果原始文件大小>64MB,按照64MB大小切分;如果<64MB,只有一个block,占用磁盘空间是源文件实际大小。
3.RPC(remote procedure call)
不同java进程间的对象方法的调用。
一方称作服务端(server),一方称作客户端(client)。
server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端。
RPC是hadoop框架运行的基础。
4.通过rpc小例子获得的认识?
4.1 服务端提供的对象必须是一个接口,接口extends VersioinedProtocal
4.2 客户端能够的对象中的方法必须位于对象的接口中。
4.3 HA(High Aailable):高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。