hadoop——安装配置及简单API操作
记录下hadoop集群的安装配置过程,步骤还挺多的,方便以后查看复习。
1、关闭防火墙
# 关闭命令
service iptables stop
systemctl stop firewalld.service
# 永久关闭防火墙
chkconfig iptables off
# 查看防火墙关闭状态
service iptables status
2、安装GCC
yum install gcc
3、安装jdk配置环境变量
cd download/ pwd tar -zxf jdk-8u162-linux-x64.tar.gz ls mv jdk1.8.0_162/ java mv java/ /usr/local/ cd /usr/local/java/ ls
编辑配置文件
vi /etc/profile
后续补图。。。
刷新配置文件
source profile
检测
java
javac
4、在hosts中添加主、从主机名
vi /etc/hosts
后续补图。。。
5、配置免密登录
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
打开authorized_keys,将主从(t1 t2 t3)中的私钥配置成一样的
后续补图。。。
6、安装hadoop配置环境变量
cd download/ tar -zxf hadoop-2.7.1.tar.gz ls cd mkdir hadoopserver cd hadoopserver/ cd / cd cd download/ mv hadoop-2.7.1 /root/hadoopserver/ cd cd hadoopserver/
编辑配置文件
vi /etc/profile
后续补图。。。
刷新配置文件
source profile
检测
hadoop
查看所有环境变量
echo $PATH
7、在主上安装lrzsz
yum install lrzsz
8、在hadoop根目录下创建temp、hdfs目录
cd /usr/local/hadoop/hadoopserver/hadoop-2.7.1/ ls mkdir temp mkdir -p hdfs/name mkdir -p hdfs/data ls
9、修改主上hadoop目录下/etc/hadoop/的配置文件
注意:复制mapred-site.xml.template为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
后续补图。。。
10、将主上的java、hadoop、hosts、profile都复制到从上
scp -r /usr/local/java root@t2:/usr/local scp -r /usr/local/java root@t3:/usr/local scp /etc/hosts root@t2:/etc/ scp /etc/hosts root@t3:/etc/ scp /etc/profile root@t2:/etc/ scp /etc/profile root@t3:/etc/ scp -r hadoop root@t2:/usr/local/ scp -r hadoop root@t3:/usr/local/
注意:在从上刷新配置文件
source /etc/profile
11、格式化hadoop
/usr/local/hadoop/hadoopserver/hadoop-2.7.1/bin/hdfs namenode -format # 或者 cd hadoop/hadoopserver/hadoop-2.7.1/ cd bin/ ./hdfs namenode -format
12、启动hdfs服务
cd sbin/ ll start-dfs.sh ll jps start-yarn.sh 检测 curl http://192.168.1.201:50070 浏览器检测 http://192.168.1.201:50070 http://192.168.1.201:8099
注意:如果不能访问,关闭防火墙
systemctl stop firewalld.service
注意:如果页面上的节点只能显示一个,删除VERSION文件,重启服务
cd hdfs/ ls cd ../temp/ ls cd dfs ls cd namesecondary/ ls cd current/ ls rm VERSION
启动所有服务
start-all.sh
13、练习
mkdir temp ls cd temp/ ls touch test ll fs -ls / hadoop fs -ls / hadoop fs -mkdir /input hadoop fs -ls / hadoop fs -mkdir /output ll hadoop fs -ls / hadoop fs -put test /input
# 查看目录 hadoop fs -ls /input # 创建文件 hadoop fs -touchz /input/test # 查看文件 hadoop fs -cat /input/test # 删除文件 hadoop fs -rm /input/test
code
package com.sunjian; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import java.io.IOException; /** * hadoop简单API操作 * @author sunjian * @date 2020/4/19 12:27 */ public class Test1 { public static void main(String[] args) { // 强制加载 System.load("C:\\Software\\hadoop\\bin\\hadoop.dll"); // 指定用户,指定Hadoop的根目录 System.setProperty("HADOOP_USER_NAME", "root"); System.setProperty("hadoop.home.dir", "C:\\Software\\hadoop"); // 创建与hdfs的链接 Configuration conf = new Configuration(); // 与core-set.xml中配置的保持一致 conf.set("fs.defaultFS", "hdfs://192.168.1.201:9000"); // hdfs的操作,和我们在java中操作file大同小异 FileSystem fs = null; FSDataOutputStream out = null; FSDataInputStream in = null; try { // 获取文件系统 fs = FileSystem.get(conf); // 判断是否是文件 // System.out.println(fs.isFile(new Path("/input"))); // false // 判断是否是目录 // System.out.println(fs.isDirectory(new Path("/input"))); // true // 查看子文件或者子目录 // FileStatus[] list = fs.listStatus(new Path("/")); // for(FileStatus status : list){ // System.out.println(status.getGroup()); // System.out.println(status.getOwner()); // System.out.println(status.getPath()); // } /* 流操作 */ // 输出流 写 // out = fs.append(new Path("/input/test2")); // out.write("这是HDFS的文件流 啊啊啊!!!".getBytes()); // out.flush(); // System.out.println("success"); // 输入流 读 in = fs.open(new Path("/input/test2")); byte[] bs = new byte[in.available()]; in.read(bs); System.out.println(new String(bs)); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (fs != null) { try { fs.close(); } catch (IOException e) { e.printStackTrace(); } } } } }


OK.
浙公网安备 33010602011771号