一、Java环境搭建
1.1、下载JDK(操作系统为ubuntu16.04 ,这里使用1.8.0_101版本,jdk-8u101-linux-x64.tar.gz)
下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1.2、解压jdk文件至/usr/lib/jvm目录
sudo tar zxvf jdk-8u101-linux-x64.tar.gz -C /usr/lib/jvm
1.3、设置环境变量
打开profile文件
sudo vim /etc/profile
插入java环境配置节
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export JAVA_BIN=$JAVA_HOME/bin export JAVA_LIB=$JAVA_HOME/lib export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
打开environment 文件
sudo vim /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games“
在 environment中修改PATH,追加JDK路径,添加CLASSPATH与JAVA_HOME后如下:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1.8.0_101/bin" CLASSPATH="/usr/lib/jvm/jdk1.8.0_101/lib" JAVA_HOME="/usr/lib/jvm/jdk1.8.0_101"
配置生效
source /etc/environment
1.4、告诉ubuntu系统,我们使用的sun的JDK,而非OpenJDK
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_101/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_101/bin/javac 300
sudo update-alternatives --config java
最后一步没有显示有多个jdk ,则配置到此结束。如果有显示则如下:
sudo update-alternatives --config java 有 2 个候选项可用于替换 java (提供 /usr/bin/java)。 选择 路径 优先级 状态------------------------------------------------------------* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自动模式 1
/usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手动模式 2 /usr/lib/jvm/jdk1.8.0_05/bin/java 300 手动模式要维持当前值[*]请按回车键,或者键入选择的编号:?
想用那个输那个号码,如上所示,这样就设置好了要使用的java了。
1.5、验证java环境是否配置成功
java -version
显示如下信息,配置成功。
abc@ubuntu:/usr/local/hadoop$ java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
二、安装SSH
sudo apt-get install openssh-server
启动ssh
sudo /etc/init.d/ssh start
查看ssh服务是否启动,如果有显示相关ssh字样则表示成功
ps -ef|grep ssh
root 913 1 0 09:11 ? 00:00:00 /usr/sbin/sshd -D
abc 8197 3837 0 14:57 pts/6 00:00:00 grep --color=auto ssh
设置免密码登录
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys $ export HADOOP\_PREFIX=/usr/local/hadoop
ssh localhost
如图设置成功。
修改网卡
注释掉127.0.1.1 ubuntu,添加新的映射127.0.0.1 ubuntu。这里必须修改,否则后面会遇到连接拒绝等问题。
abc@ubuntu:~$ sudo vim /etc/hosts
三、安装hadoop
3.1、下载hadoop-2.7.3.tar.gz,解压到/usr/local (单机模式搭建)
sudo tar zxvf hadoop-2.7.3.tar.gz -C /usr/local
给/usr/local/hadoop设置访问权限
sudo chmod 777 /usr/local/hadoop
3.2、配置.bashrc文件
sudo vim ~/.bashrc
该命令会打开该文件的编辑窗口,在文件末尾追加下面内容,然后保存,关闭编辑窗口。
#HADOOP VARIABLES START export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 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 export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib" #HADOOP VARIABLES END
执行下面命令,使添加的环境变量生效:
source ~/.bashrc
3.3、hadoop配置 (伪分布模式搭建)
配置hadoop-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# The java implementation to use. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101 export HADOOP=/usr/local/hadoop export PATH=$PATH:/usr/local/hadoop/bin
配置yarn-env.sh
sudo vim /usr/local/hadoop/etc/hadoop/yarn-env.sh
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/ export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
配置core-site.xml,在home目录地下创建 /home/abc/hadoop_tmp目录
<configuration> <!-- 指定HDFS老大(namenode)的通信地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/abc/hadoop_tmp</value> </property> </configuration>
配置hdfs-site.xml
<configuration> <!-- 指定HDFS副本的数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
配置yarn-site.xml
<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> <property> <name>yarn.resourcemanager.address</name> <value>127.0.0.1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>127.0.0.1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>127.0.0.1:8031</value> </property> </configuration>
3.4、常用命令
格式化namenode
hdfs namenode -format
启动集群
start-dfs.sh
这时候单节点伪分布就已经安装成功了,输入下面:http://localhost:50070/
输入 http://localhost:8088/
四、wordcount案例运行
查看hdfs底下包含的文件目录
hadoop dfs -ls /
hdfs创建一个文件目录
hdfs dfs -mkdir /input
其他常用命令
hadoop fs -mkdir /tmp/input 在HDFS上新建文件夹 hadoop fs -put input1.txt /tmp/input 把本地文件input1.txt传到HDFS的/tmp/input目录下 hadoop fs -get input1.txt /tmp/input/input1.txt 把HDFS文件拉到本地 hadoop fs -ls /tmp/output 列出HDFS的某目录 hadoop fs -cat /tmp/ouput/output1.txt 查看HDFS上的文件 hadoop fs -rmr /home/less/hadoop/tmp/output 删除HDFS上的目录 hadoop dfsadmin -report 查看HDFS状态,比如有哪些datanode,每个datanode的情况 hadoop dfsadmin -safemode leave 离开安全模式 hadoop dfsadmin -safemode enter 进入安全模式
新建input文件夹,上传readme.txt至input,执行命令
abc@ubuntu:/usr/local/hadoop$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /tmp/input /output1
执行成功后output1 目录底下会生成两个文件 _SUCCESS 成功标志的文件,里面没有内容。 一个是 part-r-00000 ,通过hadoop fs -cat /output1/part-r-00000进行查看执行的结果。