基础环境
1)机器 MacBookPro,2.7 GHz Intel Core i5,8G
2)虚拟机安装 Ubuntu 16.04 64-bit
配置java环境
不知是否是安装原因,我下载安装的ubuntu 环境不带java,所以自行安装配置了java,主要步骤如下:
1)下载jdk(jdk-8u111-linux-x64.tar.gz)
链接:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
ps.在国内选择中文版本网站,不知为什么外文版本的网站一直无法下载
2)解压安装
aa@ubuntu:~$ sudo mkdir -p /usr/lib/jvm
aa@ubuntu:~$ sudo mv jdk-8u111-linux-x64.tar.gz /usr/lib/jvm
aa@ubuntu:~$ cd /usr/lib/jvm
aa@ubuntu:~$ sudo tar xzvf jdk-8u111-linux-x64.tar.gz
aa@ubuntu:~$ sudo ln -s jdk1.8.0_111 java-8
3)设置环境变量
aa@ubuntu:~$ cd
aa@ubuntu:~$ vim .bashrc
在最后添加
export JAVA_HOME=/usr/lib/jvm/java-8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存退出,并通过命令使脚本生效:
aa@ubuntu:~$ cd
aa@ubuntu:~$ source .bashrc
4)检查是否配置成功,如果出现以下则证明已经配置完成
aa@ubuntu:~$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
配置hadoop 伪分布环境
Hadoop 的安装分为本地模式
、伪分布模式
、集群模式
。本地模式是运行在本地,只负责存储,没有计算功能;伪分布模式是在一台机器上模拟分布式部署,方便学习和调试;集群模式是在多个机器上配置hadoop,是真正的分布式。个人使用,只部署伪分布式,主要步骤如下。
文件均放在
/home/aa/jike/
目录下
aa@ubuntu:~/jike$ tree -L 1
.
├── jdk1.8.0_111
└── soft
1)下载hadoop 1.2.1 稳定版(jdk-8u111-linux-x64.tar.gz)
链接:https://archive.apache.org/dist/hadoop/common/stable1/hadoop-1.2.1.tar.gz
2)解压到/home/aa/jike/
目录下
aa@ubuntu:~/jike$ tree -L 1
.
├── hadoop-1.2.1
├── jdk1.8.0_111
└── soft
3)进入/home/aa/jike/hadoop-1.2.1/conf
,需要配置的核心文件有4个
.
├── core-site.xml //配置namenode和默认临时路径
├── hadoop-env.sh //配置java路径
├── hdfs-site.xml //配置hdfs备份的方式
└── mapred-site.xml //配置job.tracker端口
core-site.xml
配置
需要首先创建临时目录的路径/jike/tmp/hadoop
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://127.0.0.1:9000</value> //本机ip地址,或者本机名称
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/aa/jike/tmp/hadoop</value> //hadoop默认临时路径
</property>
</configuration>
hadoop-env.sh
配置
将JAVA_HOME
行的注释去掉,添加对应的JAVA_HOME
地址,如以上配置,本次的地址为/usr/lib/jvm/java-8
# Set Hadoop-specific environment variables here.
# The only required environment variable is JAVA_HOME. All others are
# optional. When running a distributed configuration it is best to
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.
# The java implementation to use. Required.
export JAVA_HOME=/usr/lib/jvm/java-8
hdfs-site.xml
配置
因为是单机环境,只配置一个副本,实际应用至少为3个
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
mapred-site.xml
配置
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>127.0.0.1:9001</value>
</property>
</configuration>
4)配置bashrc
aa@ubuntu:~$ cd
aa@ubuntu:~$ vim .bashrc
添加HADOOP_PATH
# set hadoop path
export HADOOP_HOME=/home/aa/jike/hadoop-1.2.1
export PATH=$HADOOP_HOME/bin:$PATH
## 防止出现$HADOOP_PATH is deprecated警告,添加以下语句
export HADOOP_HOME_WARN_SUPPRESS=1
5)测试配置情况,如果出现以下则基础配置完成
aa@ubuntu:~$ hadoop version
Hadoop 1.2.1
Subversion https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152
Compiled by mattf on Mon Jul 22 15:23:09 PDT 2013
From source with checksum 6923c86528809c4e7e6f493b6b413a9a
This command was run using /home/simon/jike/hadoop-1.2.1/hadoop-core-1.2.1.jar
6)格式化 namenode,如下则格式化完成
aa@ubuntu:~$ hadoop namenode -format
17/05/06 19:09:05 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = ubuntu/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.2.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG: java = 1.8.0_111
************************************************************/
17/05/06 19:09:05 INFO util.GSet: Computing capacity for map BlocksMap
17/05/06 19:09:05 INFO util.GSet: VM type = 64-bit
17/05/06 19:09:05 INFO util.GSet: 2.0% max memory = 932184064
17/05/06 19:09:05 INFO util.GSet: capacity = 2^21 = 2097152 entries
17/05/06 19:09:05 INFO util.GSet: recommended=2097152, actual=2097152
17/05/06 19:09:06 INFO namenode.FSNamesystem: fsOwner=simon
17/05/06 19:09:06 INFO namenode.FSNamesystem: supergroup=supergroup
17/05/06 19:09:06 INFO namenode.FSNamesystem: isPermissionEnabled=true
17/05/06 19:09:06 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
17/05/06 19:09:06 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
17/05/06 19:09:06 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
17/05/06 19:09:06 INFO namenode.NameNode: Caching file names occuring more than 10 times
17/05/06 19:09:06 INFO common.Storage: Image file /home/aa/jike/tmp/hadoop/dfs/name/current/fsimage of size 111 bytes saved in 0 seconds.
17/05/06 19:09:06 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/home/aa/jike/tmp/hadoop/dfs/name/current/edits
17/05/06 19:09:06 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/home/aa/jike/tmp/hadoop/dfs/name/current/edits
17/05/06 19:09:06 INFO common.Storage: Storage directory /home/aa/jike/tmp/hadoop/dfs/name has been successfully formatted.
17/05/06 19:09:06 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/
初次启动过程中,出现了bug,系统提示:
connect to host localhost port 22: Connection refused
经过查询得知ubuntu默认自带了ssh服务,但没有sshd服务。如果只是想登陆别的机器的SSH只需要安装openssh-client,如果要使本机开放SSH服务就需要安装openssh-server,重启ubuntu之后再启动hdfs和mapreduce就都正常启动了
aa@ubuntu:~$ sudo apt-get install openssh-server
6)启动系统:一次性全部启动
aa@ubuntu:~$ cd
aa@ubuntu:~$ start-all.sh
启动后会有5个进程
aa@ubuntu:~$ jps
17490 Jps
3283 DataNode
3080 NameNode
3833 TaskTracker
3465 SecondaryNameNode
3646 JobTracker
启动系统:分别启动HDFS和MapReduce
aa@ubuntu:~$ cd
aa@ubuntu:~$ start-dfs.sh //启动hdfs
关闭的命令是 stop-dfs.sh
执行完该命令后,通过jps能够看到NameNode、DataNode 、SecondaryNameNode 三个进程启动了
aa@ubuntu:~$ start-mapred.sh //启动MapReduce
关闭的命令是 stop-mapred.sh
执行完该命令后,通过jps能够看jobtracker、 tasktracker两个进程启动了。
也可以先启动MapReduce,再启动 HDFS。这说明,HDFS 和 MapReduce 的进程之间是互相独立的,没有依赖关系。
参考资料
1. 百度传课教程-Hive 环境搭建
2. Ubuntu 14.04 安装 JDK 8
3. hadoop环境搭建(伪分布式)
网友评论