Hadoop2.5.1在Ubuntu14中的伪分布配置+wordcount测试+eclipse环境配置
来源:互联网 发布:假面骑士ooo网络特别版 编辑:程序博客网 时间:2024/05/21 16:22
Hadoop2.5.1在Ubuntu14中的伪分布配置+wordcount测试+eclipse环境配置
一. 安装前须知
系统:Ubuntu14.04(64位)
Hadoop安装包:hadoop-2.5.1.tar.gz
Java jdk:jdk1.8.5
Eclipse: eclipse-standard-luna-R-linux-gtk-x86_64.tar.gz
Eclipse上的hadoop插件:hadoop2x-eclipse-plugin-master.zip
以上涉及的安装软件存在百度网盘:http://pan.baidu.com/s/1jGEEU
二. Hadoop伪分布搭建
1. 建立hadoop用户组、添加用户-hadoop:
sudo addgroup hadoop
sudo adduser –ingroup hadoop hadoop:按照提示输入向hadoop用户组新增的hadoop 用户密码。
2.为hadoop用户添加用户权限
输入:sudo gedit /etc/sudoers
回车,打开sudoers文件
给hadoop用户赋予和root用户同样的权限:
在此行 root All = (ALL:ALL) ALL 后添加一行:
hadoop All = (ALL:ALL) ALL (意思:允许hadoop用户sudo运行任何命令)
保存sudoers文件
3. 用新增加的hadoop用户登录Ubuntu系统(important!!),切换登录用户就好!
4. 安装ssh
输入:sudo apt-get install openssh-server
安装完成后,启动服务:sudo /etc/init.d/ssh start
查看服务是否正确启动:ps -e | grep ssh
设置免密码登录,生成公钥和私钥:ssh-keygen -t rsa -P "" (一直按回车,此时会在/home/hdoop/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥。)
紧接着,将公钥追加到authorized_keys中,它用户保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容:
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
登录ssh(测试是不是无密码登录,若提示密码登录,则按ssh配置步骤重新配置):
ssh localhost
退出 ssh登录,输入:exit(退出连接)
5. 安装jdk,配置java环境
(1)把下载的jdk安装包解压到/usr/local/jvm/目录下:
切换目录:cd /usr/local/jvm/ (其他路径也可以)
解压文件:sudo tar -zxf jdk-8u25-linux-x64.tar.gz
(2)设置jdk环境
· 打开/etc/profile:
sudo gedit /etc/profile
· 加入以下代码(根据实际安装目录更改路径):
export JAVA_HOME=/usr/local/jvm/jdk1.8.0_25
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效(不过推荐最好还是重启一下):
source /etc/profile
测试是否可行:
java -version
输出
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b14)
Java HotSpot(TM) 64-Bit Server VM
表示安装成功
6. 安装hadoop2.5.1
解压hadoop2.5.1,并重命名为hadoop文件夹:
sudo tar xzf hadoop-2.5.1-x64.tar.gz
sudo mv hadoop-2.5.1 /usr/local/hadoop
赋予用户对该文件夹的读写权限:
sudo chmod 774 /usr/local/hadoop
7.配置环境
1)配置~/.bashrc:
update-alternatives --config java(可以使用该命令行查看安装路径为:/usr/lib/jvm/jdk)
配置.bashrc文件:
sudo gedit ~/.bashrc(该命令会打开该文件的编辑窗口,在文件末尾追加下面内容,然后保存,关闭编辑窗口。)
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/ jdk1.8.0_25
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
exportHADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
exportHADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
执行下面命,使添加的环境变量生效:
source~/.bashrc
2)编辑/usr/local/hadoop/etc/hadoop/hadoop-env.sh
执行下面命令,打开该文件的编辑窗口
sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
找到JAVA_HOME变量,修改此变量如下
export JAVA_HOME=/usr/lib/jvm/ jdk1.8.0_25
8. 配置core-site.xml
/usr/local/hadoop/etc/hadoop/core-site.xml包含了hadoop启动时的配置信息。
在编辑器中打开此文件:
sudo gedit /usr/local/hadoop/etc/hadoop/core-site.xml
在该文件的<configuration></configuration>之间增加如下内容:
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
其中,name是fs.default的值表示hdfs路径的逻辑名称
保存、关闭编辑窗口。
9. 配置hdfs-site.xml
/usr/local/hadoop/etc/hadoop/hdfs-site.xml用来配置集群中每台主机都可用,指定主机上作为namenode和datanode的目录。
也可以在别的路径下创建上图的文件夹,名称也可以与上图不同,但是需要和hdfs-site.xml中的配置一致。针对于一个伪节点:
编辑器打开hdfs-site.xml:sudo gedit hdfs-site.xml
在该文件的<configuration></configuration>之间增加如下内容:
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hdfs/data</value>
</property>
保存、关闭编辑窗口
10. 设置MapReduce的配置信息
1)配置yarn-site.xml
/usr/local/hadoop/etc/hadoop/yarn-site.xml包含了MapReduce启动时的配置信息。
编辑器中打开此文件 : sudo gedit yarn-site.xml
在该文件的<configuration></configuration>之间增加如下内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
名称yarn.nodemanager.aux-services在hadoop2.5.1版本中是mapreduce_shuffle,一定要看清楚。
保存、关闭编辑窗口
2)创建和配置mapred-site.xml
默认情况下,/usr/local/hadoop/etc/hadoop/文件夹下有mapred.xml.template文件,我们要复制该文件,并命名为mapred.xml,该文件用于指定MapReduce使用的框架。
复制并重命名
cp mapred-site.xml.template mapred-site.xml
编辑器打开此新建文件
sudo gedit mapred-site.xml
在该文件的<configuration></configuration>之间增加如下内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
其中,名称mapreduce.framework.name指的是使用yarn运行mapreduce程序。
保存、关闭编辑窗口
11. 格式化hdfs
hdfs namenode -format
只需要执行一次即可,如果在hadoop已经使用后再次执行,会清除掉hdfs上的所有数据。
12. 启动Hadoop
经过上文所描述配置和操作后,下面就可以启动这个单节点的集群
1)执行启动命令:
sbin/start-dfs.sh
执行该命令时,如果有yes/no提示,输入yes,回车即可。
接下来,执行:
sbin/start-yarn.sh
执行完这两个命令后,Hadoop会启动并运行 (或者用start-all.sh替代上述两个执行命令)
2)输入:jps,会看到Hadoop相关的进程:
必须包括以下进程:
NameNode
SecondaryNameNode
NodeManager
JPS
ResourceManagger
DataNode
3)浏览器打开http://localhost:50070/,会看到hdfs管理页面
4)浏览器打开http://localhost:8088,会看到hadoop进程管理页面
步骤12中的过程,2), 3),4)全部正确则说明hadoop配置基本正确。
三. WordCount测试伪分布
在dfs上创建input目录
bin/hadoop fs -mkdir -p input
把hadoop目录下的file.txt拷贝到dfs新建的input里: hadoop fs -copyFromLocal file.txt input
运行WordCount
hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.5.1-sources.jarorg.apache.hadoop.examples.WordCount input output
运行完毕后,查看单词统计结果
hadoop fs -cat output/*
四. 安装Eclipse
1. 下载Eclipse,解压安装,
例如安装到/usr/local,即/usr/local/eclipse(tar xzf…)
2. 在eclipse上安装hadoop插件
1)下载hadoop插件
下载地址:http://pan.baidu.com/s/1mgiHFok
此zip文件包含了源码,我们使用使用编译好的jar即可,解压后,release文件夹中的hadoop.eclipse-kepler-plugin-2.2.0.jar就是编译好的插件。
2)把插件放到eclipse/plugins目录下
3)重启eclipse,配置Hadoopinstallation directory
如果插件安装成功,打开Windows—Preferences后,在窗口左侧会有HadoopMap/Reduce选项,点击此选项,在窗口右侧设置Hadoop安装路径。
4)配置Map/ReduceLocations
打开Windows—Open Perspective—Other , 选择Map/Reduce,点击OK.
点击Map/ReduceLocation选项卡,点击右边小象图标,打开HadoopLocation配置窗口:
输入LocationName,任意名称即可.配置Map/ReduceMaster和DFSMastrer,Host和Port配置成与core-site.xml的设置一致即可。
点击"Finish"按钮,关闭窗口。
点击左侧的DFSLocations—>myhadoop(上一步配置的locationname),如能看到user,表示安装成功
3. Eclipse下运行WordCount.java
启动hadoop后,打开Eclipse菜单中File—>Project,选择Map/ReduceProject,输入项目名称WordCount等。
在WordCount项目里新建class,名称为WordCount,代码如下:
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
importorg.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
importorg.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static classTokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{
private final staticIntWritable one = new IntWritable(1);
private Text word = newText();
public void map(Object key,Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr = newStringTokenizer(value.toString());
while(itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word,one);
}}}
public static class IntSumReducerextends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result =new IntWritable();
public void reduce(Text key,Iterable<IntWritable> values,Context context) throws IOException, InterruptedException{
intsum = 0;
for (IntWritable val :values) {
sum += val.get();
}
result.set(sum);
context.write(key,result);
}}
public static void main(String[]args) throws Exception {
Configuration conf = newConfiguration();
String[] otherArgs = newGenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage:wordcount <in> <out>");
System.exit(2);
}
Job job = new Job(conf,"word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job,new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job,new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true)? 0 : 1);
}}
运行
1、建立输入文件夹input
hadoop fs -mkdir input
2、拷贝本地README.txt到HDFS的input里
hadoop fs -copy FromLocal /usr/local/hadoop/README.txt input
3、点击WordCount.java,右键,点击RunAs—>Run Configurations,配置运行参数,即输入和输出文件夹
hdfs://localhost:9000/user/hadoop/input hdfs://localhost:9000/user/hadoop/output
点击Run按钮,运行程序。
4、运行完成后,查看运行结果
方法1:
hadoop fs -ls output
可以看到有两个输出结果,_SUCCESS和part-r-00000
执行hadoop fs -cat output/*
方法2:
展开DFSLocations,双击打开part-r00000查看结果
- Hadoop2.5.1在Ubuntu14中的伪分布配置+wordcount测试+eclipse环境配置
- hadoop2.2.0 伪分布环境配置
- hadoop2伪分布简易配置
- hadoop2.4.1伪分布配置
- 64位Ubuntu14.04下安装hadoop2.6单机配置和伪分布配置详解
- Ubuntu下 hadoop2.5.1 (伪分布模式) 配置工作
- hadoop2.7伪分布安装配置
- Ubuntu16.04 hadoop2.7.3 伪分布配置
- hadoop2.8.0伪分布配置文件配置
- hadoop - hadoop2.6 伪分布式 - eclipse 中 配置 和 示例 wordcount
- Hadoop伪分布配置与基于Eclipse开发环境搭建
- hadoop2.3.0单点伪分布与多点分布的配置
- 配置Hadoop伪分布模式并运行Wordcount示例
- hadoop第一篇,在Ubuntu14.04安装hadoop2.7.3伪分布式配置
- win7使用伪分布模式配置Hadoop2.2
- Ubuntu安装Hadoop2进行单机和伪分布配置
- Hadoop2.7.4单机模式/伪分布模式详细配置(Ubuntu)
- Eclipse配置hadoop2.2.0环境
- Lua源代码阅读(二)string的实现
- 使用真机调试时的问题。
- 解析oracle的rownum
- Linux内核学习(一)8086编程模型
- 集训小记 8
- Hadoop2.5.1在Ubuntu14中的伪分布配置+wordcount测试+eclipse环境配置
- 迷瘴 贪心
- FatMouse' Trade 贪心
- 校园视频管理系统----EF+WCF+MVC实现SOA架构
- Mysql手动启动
- Java对象克隆——浅拷贝与深拷贝
- jQuery.validator.addMethod自定义验证方法【在表单验证中的使用 $("#appEdit_Form").validate({rules : {},messages:{}】
- 中国手机网络制式常识
- EasyUI