背景
本人这段时间一直在进行hadoop的安装配置,前前后后花费了很多时间。在这里感谢学长的帮助,才让我对安装的过程
有了更好的理解也让我更加顺利的安装成功。在这里只提供伪分布式的安装步骤,分布式的安装之后经过测试再给出。安装过程如
有错误,欢迎大家前来指正。
环境
虚拟环境:Oracle VM VirtualBox
虚拟机:ubuntu-14.04.4-server-amd64
JDK:jdk-8u131-linux-x64.tar
HADOOP:hadoop-2.6.0.tar
客户端:Bitvise SSH Client
安装虚拟环境
在window上安装VirtualBox虚拟环境。这里使用VirtualBox-5.1.18-114002-Win。傻瓜式安装。
安装虚拟机
1、点击新建按钮,选择类型为linux,点击下一步。
2、选择内存1024M,储存20G。傻瓜式安装,设置账号密码并牢记。
添加启动镜像,此处为ubuntu14.04
english —— install —— 键盘检测跳过直接选english US —— 傻瓜式安装。设置账户密码,牢记账户密码。
注意要选择ssh(按空格选择)
sudo passwd改root密码
配置网卡+重启
输入sudo vim /etc/network/interface
后增加以下内容
auto eth0
iface eth0 inet dhcp
up route add default gw 10.0.2.2 dev eth0 (#持久化操作)
auto eth1
iface eth1 inet static
address 192.168.56.100 (#此处为登录的IP地址)
netmask 255.255.255.0
gateway 192.168.56.1
dns 202.118.1.29
up route del default dev eth1 (#持久化操作)
注:按i或Insert可以进入填写内容,按Esc和:wq是保存并退出。
输入sudo vim /etc/hosts 配置ip地址,把ipv6注释掉
3、关闭虚拟机
4、客户端网卡配置好
5、启动虚拟机(无界面登录),并且使用Bitvise SSH Client登录(方便)。Bitvise SSH Client的IP和虚拟机中配置的是对应的。
Jdk安装
1、解压缩
hadoop@master:~/softwares$ tar -vzxf jjdk-8u131-linux-x64.tar.gz(tar和-vzxf之间有空格)
2、修改名字
hadoop@master:~/softwares$ mv jjdk1.8.0_131 jdk1.8.0
3、设置环境变量,增加到/etc/profile中
export JAVA_HOME=/home/hadoop/softwares/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
4、配置生效
hadoop@master:~/softwares$ source /etc/profile
5、验证
java -version
Hadoop安装
本节的所有的配置均在(/home/hadoop/softwares/hadoop-2.6.0/etc/hadoop/)下。
1、切换到/home/hadoop/softwares/hadoop-2.6.0/etc/hadoop/下,进行hadoop-env.sh的配置。
export JAVA_HOME=/home/hadoop/softwares/jdk1.8.0
2、进行core-site.xml的配置。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
<description>hadoop hdfs 主节点的文件地址</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<description>IO缓冲池大小</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/softwares/hadoop-2.6.0/tmp</value>
<description>hadoop运行时中间文件的存放位置,不能配置成系统默认的/tmp目录,会导致hadoop下次运行时数据丢失</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
<description>该集群的hosts控制,允许hadoop用户在 其他ip地址上进行访问该集群</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
<description>hadoop所属组,结合webhdfs使用,可以通过http post 等协议访问hdfs</description>
</property>
</configuration>
3、配置mapred-site.xml, 默认没有改配置文件,使用
cp mapred-site.xml.template mapred-site.xml 进行创建。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>mapreduce使用的资源调度框架,yarn</description>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
<description>提交到hadoop上的作业的jobhistoryserver端口号</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
<description>访问作业历史情况的web端口</description>
</property>
</configuration>
4、配置hdfs-site.xml。
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
<description>secondary namenode 地址,集群故障时采用</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/softwares/hadoop-2.6.0/dfs/name</value>
<description>主节点元文件信息目录</description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/softwares/hadoop-2.6.0/dfs/data</value>
<description>从节点文件存放目录</description>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>集群存储2份数据</description>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
<description>可以使用web访问hdfs</description>
</property>
</configuration>
5、在/etc/profile中增加HADOOP_HOME的PATH,CLASSPATH相关的路径,修改完以后,使用source /etc/profile生效。
并有java -version测试。
/etc/profile中的文件内容如下:
6、注:一个横线的问题找了一个小时,很坑。所以当你解决不了问题的时候重新自己打一遍代码,不要复制。如下:
7、最好注释掉/etc/hosts中的ipv6功能和127.0.1.1这个虚地址。
8、各个配置中的文件夹需要手动创建 tmp dfs/name dfs/data
9、退出到hadoop-2.6.0目录格式化主节点
10、hadoop@master:~/softwares/hadoop-2.6.0$ bin/hadoop namenode –format
11、启动分布式文件系统
hadoop@master:~/softwares/hadoop-2.6.0$ sbin/start-dfs.sh
12、启动完成以后使用jps命令查看进程。
13、登录网页http://192.168.56.100:50070 查看节点状态。其中192.168.56.100为主节点ip地址。
14、关闭命令。
hadoop@master:~/softwares/hadoop-2.6.0$ sbin/stop-dfs.sh
15.解决datanode进程未出现
解决办法:删除data文件夹。
执行测试程序wordcount
1、进入到/home/hadoop/softwares/hadoop-2.6.0目录(就是有README.txt的那个);
2、创建input目录,用来存放README.txt文件:
hadoop fs -mkdir /input
3、将README.txt文件存入HDFS中的input文件夹下:
hadoop fs -copyFromLocal README.txt /input
4、查看是否成功将README.txt文件放入相应的HDFS文件夹:
hadoop fs -ls /input
5、进入/home/hadoop/softwares/hadoop-2.6.0/share/hadoop/mapreduce文件夹下执行:
hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /input /output
6、查看程序运行结果:
hadoop fs -ls /output
7、查看每个单词的统计结果
hadoop fs -cat /output/part-r-00000
8、output已存在,需删除output
hadoop fs -ls /output查看hadoop的output文件
hadoop fs -rm /output/_SUCCESS 删除/output/_SUCCESS
9、测试另一个文本(I LOVE CHINA)
测试之前没有删除output,之后删除也报错。最后采用重启hadoop解决了这个问题,不知道有没有更好的方法。