hadoop-2.6.0伪分布式安装详细步骤

时间:2022-09-24 20:49:38

   本文详细介绍在虚拟机VMware中linux上单机部署hadoop-2.6.0的过程;假设虚拟机及linux系统已安装完成;本文从jdk的安装开始,直到完成Wordcount测试。

配置简介:

1. 虚拟机 VMware workstation 10

2. 操作系统  Red hat linux 5.0 版本 32bit

3.  jdk版本  jdk-8u40-linux-i586.rpm

4.  Hadoop 版本 hadoop-2.6.0.tar.gz

5.  远程登录  客户端putty

6.  ftp客户端 LeapFTP_3.1.0.50_XiaZaiBa.exe

本文在未联网的前提下部署hadoop,即需要用到的jdk,hadoop安装包均有ftp上传至虚拟机中,因此,首先要完成虚拟机上ftp服务器的安装及启动,由本地ftp客户端上传需要的安装包。

1.jdk安装

 redhat linux系统自带jdk版本为1.4.2,需卸载,安装jdk1.8.0_40

root用户下,打开终端输入命令
# rpm -qa|grep gcj

显示内容其中包含下面两行信息
# java-1.4.2-gcj-compat-1.4.2.0-27jpp
# java-1.4.2-gcj-compat-devel-l.4.2.0-27jpp
卸载
# rpm -e java-1.4.2-gcj-compat-devel-l.4.2.0-27jpp
# rpm -e java-1.4.2-gcj-compat-l.4.2.0-27jpp

卸载其他自己安装的JDK就直接用rpm -e <javaXXXXX>

环境变量设置

根目录下:
[root@promote /]#vi .bashrc

 #只有这里需要改为jdk1.8.0_40所在目录
set JAVA_HOME=/usr/java/j2sdk1.4.2_06 
export JAVA_HOME
set PATH=$PATH:$JAVA_HOME/bin
export PATH
set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export CLASSPATH

测试java -version

2.ssh免密码登陆

确认能否不输入口令就用ssh登录localhost:
$ ssh localhost
如果不输入口令就无法用ssh登陆localhost,执行下面的命令:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

启动sshd服务 /etc/rc.d/init.d/sshd start 

rpm -qa | grep ssh                可以看到系统中ssh安装包
rpm -ql openssh-3.5p1-6      查看该安装包安装信息(如安装路径,配置文件等)
ps -e | grep ssh                   查看ssh服务有没有运行,如果有,可以看到类似以下内容:
2254 ? 00:00:00 sshd
这证明ssh已经在运行了,进程名为sshd


看下ssh服务的网络连接情况: 
    root]#netstat -ntlp 
如果看到如下内容:
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      22109/sshd
这说明sshd已经能够正常工作了

3.putty乱码问题

打开putty主程序,选择window-〉Appearance-〉Font settings-〉Change...,选择Fixedsys字体
在window-〉Appearance -〉Translation中,修改Received data assumed to be in which character set 中和Linux中的字符集,把Use font encoding改为UTF-8。



如果经常使用,把这些设置保存在session里面. 现在打开putty,登录成功后,在shell中输入:export LC_ALL='zh_CN.utf8' ,中文显示就正常了 。

4. hadoop-2.6.0配置测试

1)解压tar包
tar -zxvf hadoop-2.2.0.tar.gz -C /usr/hadoop

2)配置
所有配置文件 在目录  /usr/hadoop/hadoop-2.6.0/etc/hadoop

1、hadoop-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_40

2、yarn-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_40

3、mapred-env.sh
export JAVA_HOME=/opt/modules/jdk1.8.0_40

4、core-site.xml
<property>  
<name>fs.default.name</name>
<value>hdfs://hadoop-yarn.dragon.org:8020</value>
</property>


<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.2.0/data/tmp</value>
</property>

5、hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>

6、yarn-site.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

7、mapred-site.xml
<property>        
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

3)hadoop启动

5. hadoop-2.6.0测试

启动方式
1.逐一启动
2.分别启动dfs,yarn,如下
sbin/start-all.sh  启动所有进程   用jps查看
sbin/stop-all.sh    停止所有进程
3.全部启动,hadoop1.x使用,2.x中保留,但使用会报错


sbin/start-dfs.sh
sbin/start-yarn.sh  


1、启动HDFS
NameNode、DataNode、SecondaryNameNode
* NameNode 格式化
bin/hdfs namenode -format     --产生一个Cluster ID集群ID

* 启动NameNode
sbin/hadoop-daemon.sh start namenode
* 启动DataNode
sbin/hadoop-daemon.sh start datanode
* 启动SecondaryNameNode
sbin/hadoop-daemon.sh start secondarynamenode

2、启动YARN
ResourceManager、NodeManager
* 启动ResourceManger
sbin/yarn-daemon.sh start resourcemanager
* 启动NodeManager
sbin/yarn-daemon.sh start nodemanager


Web管理hadoop
namenode IP+端口号
namenode 地址:http://192.168.30.131:50070/    
SecondaryNameNode  地址:http://192.168.30.131:50090/
yarn  地址:http://192.168.30.131:8088/
 
hadoop-2.6.0目录下 bin/hdfs dfs -mkdir /data01  在hdfs中新建文件data01 即可在浏览器文件系统中显示

日志文件

启动日志文件目录默认为 $HADOOP_HOME/logs

分析日志文件的格式log out

.log:通过log4j记录的,记录大部分应用程序的日志信息
.out:记录标准输出和标准错误日志,少量记录

日志文件命名规则

框架名称--用户名--进程名--主机名--日志格式后缀

hadoop-2.6.0目录下 bin/hdfs dfs 常用命令

bin/hdfs dfs -ls /  显示文件夹
touch test.txt      创建文本文件test.txt
vim  test.txt      编辑文件
bin/hdfs dfs -put ./test.txt  /data01  把本地文件test放到文件夹data中
bin/hdfs dfs -ls /data01 显示文件夹data01中文件
bin/hdfs dfs -cat  /data01/test.txt  显示文件内容
bin/hdfs dfs -text  /data01/test.txt  显示文件内容
./sbin/start-all.sh  启动hadoop所有服务
查看相应的端口是否启动:netstat -ntpl
日志删除命令:logs目录下
rm -rf ./*.log  删除后缀为.log的日志
rm -rf ./*.out  删除后缀为.out的日志


错误
Java HotSpot(TM) Client VM warning:You have loaded library /usr/hadoop/hadoop-2.6.0/lib/native/libhadoop.s0.1.0.0 which might have disabled stack guard the VM will try to fix the stack guard now
it's highly recommended that you fix the library with execstack -c <libfile>,or link it with -z noexecstack


采用方法如下:

在使用./sbin/start-dfs.sh或./sbin/start-all.sh启动时会报出这样如下警告:

Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
....
Java: ssh: Could not resolve hostname Java: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
....

这个问题的错误原因会发生在64位的操作系统上,原因是从官方下载的hadoop使用的本地库文件(例如lib/native/libhadoop.so.1.0.0)都是基于32位编译的,运行在64位系统上就会出现上述错误。解决方法之一是在64位系统上重新编译hadoop,另一种方法是在hadoop-env.sh和yarn-env.sh中添加如下两行:
[plain] view plaincopy
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native  
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"  


测试程序
bin/hdfs dfs -ls /  显示文件夹
往文件夹大data01上传
bin/hdfs dfs -mkdir /data01/input   在文件夹data01下创建input目录
touch  hello.input   编写文件hello
vi  hello.input  编译文件


bin/hdfs dfs -put ./hello.input /data01/input/ 把文件hello放到文件夹


bin/hdfs dfs -ls /data01/input/   查看文件


bin/hdfs dfs -text /data01/input/hello.input  显示文件内容


bin/hdfs dfs -rm -r /data01/output/   删除输出文件output


bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /data01/input/ /data01/output/    调用程序执行


运行完成 查看bin/hdfs dfs -ls /data01/output/ 
两行 
------success  表示运行成功
运行结果


查看运行结果 bin/hdfs dfs -text /data01/output/part-r-00000
统计结果


sbin/hadoop-daemon.sh start historyserver 启动历史服务器


运行一个mapreduce程序
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar pi 2 10        求pi 2个map 10个样本点


2 10  156.516s  pi  3.80000000000000000000000000
4 20  338.827s  pi  3.20000000000000000000000000