Ubuntu-16.04-Desktop +Hadoop2.7.5+Eclipse-Neon的云计算开发环境的搭建(伪分布式方式)
|
主控终端 |
|
|
主机名 |
ubuntuhadoop.smartmap.com |
|
IP |
192.168.1.60 |
|
Subnet mask |
255.255.255.0 |
|
Gateway |
192.168.1.1 |
|
DNS |
218.30.19.50 |
|
61.134.1.5 |
|
|
Search domains |
smartmap.com |
1. 设置网络IP
sudo
nmtui

sudo
/etc/init.d/networking restart
2. 设置主机名
sudo
hostnamectl set-hostname=ubuntuhadoop.smartmap.com
sudo
gedit /etc/hosts
127.0.0.1 localhost
#
127.0.0.1 ubuntuhadoop.smartmap.com
#
127.0.0.1 ubuntuhadoop
192.168.1.60 ubuntuhadoop
192.168.1.60 ubuntuhadoop.smartmap.com
# The
following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
3. 关闭防火墙
sudo
ufw disable
4. 安装VMwareTool
https://www.linuxidc.com/Linux/2016-04/130807.htm
5. 安装SSH
5.1. 安装SSH服务
sudo
apt-get install -y openssh-server
5.2. 设置SSH
sudo
vi /etc/ssh/sshd_config
PermitRootLogin yes
5.3. 启动SSH服务
sudo
service ssh start
sudo
service ssh restart
5.4. 节点间无密码互访
5.4.1. zyx用户
cd
~
ssh-keygen
-t rsa
cp
.ssh/id_rsa.pub .ssh/authorized_keys
5.4.2. root用户
sudo
su – root
cd
~
ssh-keygen
-t rsa
cp
.ssh/id_rsa.pub .ssh/authorized_keys
exit
6. 设置vim(Ubuntu中的vim太难用了)
sudo
gedit /etc/vim/vimrc.tiny
" set
compatible
set
nocompatible
set
backspace=2
"
vim: set ft=vim:
7. 安装JDK
7.1. 加入Oracle的JDK仓库
sudo
add-apt-repository ppa:webupd8team/java
7.2. 更新
sudo
apt-get update
7.3. 安装
sudo
apt-get install oracle-java8-installer
注意:java默认安装在 /usr/lib/jvm文件夹下
7.4. 环境变量配置
sudo
gedit /etc/profile
export
JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JRE_HOME=$JAVA_HOME/jre
export
CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export
HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.5
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export
HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export
YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
export
LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server:/usr/local/lib:$HADOOP_HOME/lib/native
export
JAVA_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_LIBRARY_PATH
souce
/etc/profile
8. 安装Hadoop
8.1. 解压hadoop
sudo
mkdir /usr/local/hadoop
sudo
tar zxvf hadoop-2.7.5.tar.gz -C /usr/local/hadoop
8.2. 创建目录
mkdir
/home/zyx/tmp
mkdir
/home/zyx/dfs
mkdir
/home/zyx/dfs/name
mkdir
/home/zyx/dfs/data
mkdir
/home/zyx/dfs/checkpoint
mkdir
/home/zyx/yarn
mkdir
/home/zyx/yarn/local
8.3. 修改Hadoop的配置文件
各配置文件在/usr/local/hadoop/hadoop-2.7.5/etc/hadoop/目录下
8.3.1. hadoop-env.sh
# The
java implementation to use.
#
export JAVA_HOME=${JAVA_HOME}
export
JAVA_HOME=/usr/lib/jvm/java-8-oracle
export
HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.5
export
PATH=$PATH:/usr/local/hadoop/hadoop-2.7.5/bin
8.3.2. yarn-env.sh
#
some Java parameters
#
export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export
JAVA_HOME=/usr/lib/jvm/java-8-oracle
8.3.3. core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.1.60:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zyx/tmp</value>
</property>
</configuration>
8.3.4. hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>192.168.1.60:50070</value>
</property>
<property>
<name>dfs.namenode.http-bind-host</name>
<value>192.168.1.60</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.1.60:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/zyx/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/zyx/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>/home/zyx/dfs/checkpoint</value>
</property>
</configuration>
8.3.5. mapred-site.xml
sudo
cp /usr/local/hadoop/hadoop-2.7.5/etc/hadoop/mapred-site.xml.template
/usr/local/hadoop/hadoop-2.7.5/etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
8.3.6. yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.1.60</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/zyx/yarn/local</value>
</property>
</configuration>
8.3.7. slave
sudo
gedit /usr/local/hadoop/hadoop-2.7.5/etc/hadoop/slaves
192.168.1.60
9. Hadoop启动
9.1. HDFS文件的格式化
注意在zyx用户下
hadoop
namenode -format
9.2. DFS服务的启动与关停
注意在root用户下
cd
/usr/local/hadoop/hadoop-2.7.5/sbin/
sudo
./start-dfs.sh
sudo
./stop-dfs.sh
9.3. 查看数据节点信息
hadoop
dfsadmin -report
9.4. YARN服务的启动与关停
注意在root用户下
cd
/usr/local/hadoop/hadoop-2.7.5/sbin/
sudo
./start-yarn.sh
sudo
./stop-yarn.sh
9.5. 查看本机上已启动的服务
sudo
jps
9.6. HDFS的Web UI管理界面
http://192.168.1.60:50070/dfshealth.html#tab-overview

9.7. MapReduce应用的Web
UI管理界面
http://192.168.1.60:8088/cluster

10. 安装Eclipse
10.1. 解压eclipse
sudo
mv /home/zyx/software/eclipse-java-neon-3-linux-gtk-x86_64.tar.gz
/opt/
sudo
tar zxvf /opt/eclipse-java-neon-3-linux-gtk-x86_64.tar.gz
sudo
mkdir /opt/eclipse/workspace
10.2. 安装插件
sudo
mv /home/zyx/software/hadoop-eclipse-plugin-2.7.3.jar /opt/
sudo
cp /opt/hadoop-eclipse-plugin-2.7.3.jar /opt/eclipse/dropins/
ls
-la dropins/
10.3. 启动Eclipse
cd
/opt/eclipse/
sudo
./eclipse
11. 准备数据
11.1. 查找应用数据
sudo
cp /usr/local/hadoop/hadoop-2.7.5/NOTICE.txt /home/zyx/test.txt
sudo
chown zyx:zyx /home/zyx/test.txt
11.2. 将数据放入HDFS中
hadoop
fs -mkdir /input
hadoop
fs -put /home/zyx/test.txt /input
hadoop
fs -chmod -R 777 /input/test.txt
12. 配置Eclipse中的Hadoop设置
12.1. 设置Hadoop安装路径

12.2. 设Eclipse的Hadoop视图


12.3. 连接HDFS



12.4. 新建MapReduce工程


12.5. 新建运行的类


WordCount类中的内容
package org.apache.hadoop.examples;
import java.io.IOException;
import java.util.StringTokenizer;
import
org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import
org.apache.hadoop.mapreduce.Reducer;
import
org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import
org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public
class WordCount {
public
static
class
TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>
{
private
final
static
IntWritable one
= new IntWritable(1);
private
Text word
= new Text();
public
void
map(Object key,
Text value,
Context context)
throws IOException, InterruptedException {
StringTokenizer itr
= new
StringTokenizer(value.toString());
while
(itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word,
one);
}
}
}
public
static
class
IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable>
{
private
IntWritable result
= new IntWritable();
public
void
reduce(Text key,
Iterable<IntWritable> values,
Context context)
throws IOException, InterruptedException {
int
sum = 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
= new Configuration();
Job job
= Job.getInstance(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(args[0]));
FileOutputFormat.setOutputPath(job,
new
Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
12.6. 新建日志配置文件log4j.properties
在src/目录下新建日志配置文件log4j.properties
其内容如下:
log4j.rootLogger=debug,
stdout,
R
#log4j.rootLogger=stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%5p -
%m%n
log4j.appender.stdout.layout.ConversionPattern=%d
%p
[%c]
-
%m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log4j.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#log4j.appender.R.layout.ConversionPattern=%p %t %c -
%m%n
log4j.appender.R.layout.ConversionPattern=%d
%p
[%c]
-
%m%n
#log4j.logger.com.codefutures=DEBUG

12.7. 运行

12.7.1. 运行环境设置

12.7.1.1. 设置输入与输出
hdfs://192.168.1.60:9000/input/test.txt
hdfs://192.168.1.60:9000/output

12.7.1.2. 设置环境变量
HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.5

12.8. 启动运行


12.9. 查看运行结果

Ubuntu-16.04-Desktop +Hadoop2.7.5+Eclipse-Neon的云计算开发环境的搭建(伪分布式方式)的更多相关文章
- ubuntu 14.04/15.10 安装基于eclipse的android app开发环境
一开始是装了ubuntu15.10,不知道是我的x200机器太old还是iso镜像有问题,总是各种莫名的引导不起来.有时候刚刚装好的干净系统,只install了一个vim和openssh,重启,然后就 ...
- Ubuntu 12.04 Desktop下vncserver配置:Unity以及Xfce4桌面环境
将gnome改成xfce xfce-session 即可 2013-01-30 14:45:34| 分类: Ubuntu | 标签:ubuntu12.04 unity vncserver s ...
- <图文教程>VMware 14上Ubuntu 16.04 desktop版的安装
VMware14安装Ubuntu16.04教程 久闻Linux(这单词念做 林尼克斯??)大名,闲来无事就试着给自己笔记本装一个玩玩,从朋友口中得知可以在Vmware上装虚拟机,就自己试着尝试一下,顺 ...
- 安装 mysql5.7.2 (Ubuntu 16.04 desktop amd64)
1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_5 ...
- 安装 mysql8.0.13 (Ubuntu 16.04 desktop amd64)
1.下载mysql deb https://dev.mysql.com/downloads/mysql/ #移动到/usr/local/src/目录,解压 sudo mv mysql-server_8 ...
- Ubuntu 16.04 LTS nodejs+pm2+nginx+git 基础安装及配置环境(未完,未整理)
-.Ubuntu 安装nodejs 以下内容均在命令行,完成,首先你要去你电脑的home目录:cd ~. [sudo] apt-get update [sudo] apt-get upgrade ap ...
- 十一招让Ubuntu 16.04用起来更得心应手(转)
ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年! 这样一来,一开始就设置好显得特别重要.你应该确保你的软件是 ...
- 十招让Ubuntu 16.04用起来更得心应手(转)
ubuntu 16.04是一种长期支持版本(LTS),是Canonical承诺发布五年的更新版.也就是说,你可以让这个版本在电脑上运行五年! 这样一来,一开始就设置好显得特别重要.你应该确保你的软件是 ...
- Ubuntu 16.04 LTS 搭建ftp服务器
其实我之前搭建好了,但是最近我上来看好像跟没搭建一样呢,于是我从新搭建一遍? 我的ubuntu版本: cat /etc/issue Ubuntu 16.04 LTS \n \l 1.安装vsftpd( ...
随机推荐
- iOS----线程之间的通信
当线程的数量大于一个的时候,线程之间可能会产生通信,既一个线程产生的结果要被另一个线程用到. 比如常用的图片的加载就是这个样子.图片的加载是在子线程进行的,当图片加载完毕,就会回到主线程中刷新UI,展 ...
- php语法分析
php的语法分析的主要作用是验证词法分析的基础上将token组成的序列,在php这门语言中是否是一个有效的句子,也可以理解为这些token序列是否匹配设计php这门语言时的语法模型,在匹配的情况下构建 ...
- kafka 消费者offset记录位置和方式
我们大家都知道,kafka消费者在会保存其消费的进度,也就是offset,存储的位置根据选用的kafka api不同而不同. 首先来说说消费者如果是根据javaapi来消费,也就是[kafka.jav ...
- Spring Security构建Rest服务-1400-授权
安全分为 认证和授权,前边讲的都是认证,现在说授权. 前端业务系统的权限简单些,一般只区分是否登录,复杂点的还会区分 VIP用户等简单的角色,权限规则基本不变. 后台系统比较复杂,角色众多,权限随着业 ...
- flex的使用以及布局
1.添加flex属性后的区别 <style> body{ font-size:35px; } .flex-box{ display:flex; display: -webkit-flex; ...
- JDK自带工具介绍
JDK工具一览表 工具名称 功能描述 appletviewer.exe 用于运行并浏览applet小程序. apt.exe 注解处理工具(Annotation Processing Tool),主要用 ...
- Global Embedding 理解
1.Attention-based seq2seq e(t,i):求上一时刻的输出和这一时刻编码器的输出的相似度 a(t,i):求这个词在整个文本中占多大的比重,每个时刻都存在着一个值,这个只是求一个 ...
- Inno Setup设置在安装Finished页面,点击finish后打开网页
在安装的最后一个页面FinishPage中点击Finished然后打开一个网页 这个功能貌似很简单,不就是在点击finish按钮给它绑定事件,问题立马解决. 在普通的桌面应用程序开发中的确是这样做的, ...
- nginx 学习笔记(4) Connection处理方法
nginx支持connection的多种处理方法.nginx运行的平台确定了可用的处理方法. 在特定平台下connection的多种处理方法中,nginx会自动选择一种最有效的方法.然而,如果需要,你 ...
- golang基础--控制语句
go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员. 操作符&取变量的地址,使用*通过指针间间接访问目标对 ...