linux下hadoop 环境搭建

  1. 准备 3台linux 分别hostname为: node-1,node-2,node-3

    在第一台机子
    vi /etc/hostname
     node1
    	在第2台机子
    vi /etc/hostname
     node2
     	在第3台机子
    vi /etc/hostname
     node3
    

    修改后需要重启没台机器

  2. 配置免密(在node1 主节点操作)

  ssh-genkey -t rsa    #4个空格
  ssh-copy-id node1
  ssh-copy-id node2
  ssh-copy-id node3
  1. 安装 JDK 并配置 环境变量
tar -zxvf jdk.tar.gz  -C /usr/local/

配置环境变量
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

source /etc/profile
在node1 操作
scp jdk安装路径 root@node2 /usr/local
scp jdk安装路径 root@node3 /usr/local
  1. 通过xshell等ssh 工具 查看3台机子的时间是否一致(需通过成一致的时间)
    xshell 查看-撰写-撰写窗口-全部会话(可以在敲一遍命名 在所有窗口生效)

  2. 修改每台机子的hosts文件

     vi /etc/hosts 
       
     127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
     ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
     192.168.1.220 node-1
     192.168.1.222 node-2
     192.168.1.223 node-3
    
  3. 解压hadoop安装包tar -zxvf hadoop-3.3.1.tar.gz

  4. vi /usr/local/hadoop-3.3.1/etc/hadoop/hadoop-env.xml

    #配置jdk
    JAVA_HOME=/usr/local/jdk1.8.0_301
    
       
    
    #文末添加
    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root 
    
  5. vi /usr/local/hadoop-3.3.1/etc/hadoop/core-site.xml

    <configuration> 
    	<property> 
    		<name>fs.default.name</name> 
    		<value>hdfs://node1:8020</value> 
    	</property> 
    	 
    	<!-- 设置Hadoop本地保存数据路径 -->
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>/app/data/hadoop-3.3.1</value>
    	</property>
    	<!-- 设置HDFS web UI用户身份 -->
    	<property>
    		<name>hadoop.http.staticuser.user</name>
    		<value>root</value>
    	</property>
    	<!-- 整合hive 用户代理设置 -->
    	<property>
    		<name>hadoop.proxyuser.root.hosts</name>
    		<value>*</value>
    	</property>
    	<property>
    		<name>hadoop.proxyuser.root.groups</name>
    		<value>*</value>
    	</property>
    	<!-- 垃圾桶文件保存时间 -->
    	<property>
    		<name>fs.trash.interval</name>
    		<value>1440</value>
    	</property>
    </configuration>
    
    
  6. vi /usr/local/hadoop-3.3.1/etc/hadoop/hdfs-site.xml

       <configuration>
       	<property> 
       		<name>dfs.replication</name> 
       		<value>2</value>
       	</property> 
       	<property> 
       		<name>dfs.namenode.secondary.http-address</name> 
       		<value>node-2:50090</value> 
       	 	</property>
       	<property> 
       		<name>dfs.datanode.handler.count</name> 
       		<value>50</value>
       	</property> 
       </configuration>
    
      ```
    
  7. vi /usr/local/hadoop-3.3.1/etc/hadoop/mapred-site.xml

    <configuration>
       <!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
       <property>
       	<name>mapreduce.framework.name</name>
       	<value>yarn</value>
       </property>
       <!-- MR程序历史服务器端地址 -->
       <property>
       	<name>mapreduce.jobhistory.address</name>
       	<value>node1:10020</value>
       </property>
       <!-- 历史服务器web端地址 -->
       <property>
       	<name>mapreduce.jobhistory.webapp.address</name>
       	<value>node1:19888</value>
       </property>
       <property>
       	<name>yarn.app.mapreduce.am.env</name>
       	<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
       </property>
       <property>
       	<name>mapreduce.map.env</name>
       	<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
       </property>
       <property>
       	<name>mapreduce.reduce.env</name>
       	<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
       </property>
    </configuration>
    
    
    
  8. vi /usr/local/hadoop-3.3.1/etc/hadoop/yarn-site.xml

       <configuration>
    	<!-- 设置YARN集群主角色运行机器位置 -->
    	<property>
    		<name>yarn.resourcemanager.hostname</name>
    		<value>node1</value>
    	</property>
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    	</property>
    	<!-- 是否将对容器实施物理内存限制 -->
    	<property>
    		<name>yarn.nodemanager.pmem-check-enabled</name>
    		<value>false</value>
    	</property>
    	<!-- 是否将对容器实施虚拟内存限制。 -->
    	<property>
    		<name>yarn.nodemanager.vmem-check-enabled</name>
    		<value>false</value>
    	</property>
    	<!-- 开启日志聚集 -->
    	<property>
    		<name>yarn.log-aggregation-enable</name>
    		<value>true</value>
    	</property>
    	<!-- 设置yarn历史服务器地址 -->
    	<property>
    		<name>yarn.log.server.url</name>
    		<value>http://node1:19888/jobhistory/logs</value>
    	</property>
    	<!-- 保存的时间7天 -->
    	<property>
    		<name>yarn.log-aggregation.retain-seconds</name>
    		<value>604800</value>
    	</property>
    </configuration>
    
  9. vi /usr/local/hadoop-3.3.1/etc/hadoop/workers

    node-1
    node-2
    node-3
    
  10. 配置hadoop环境变量(vi /etc/profile)

    export HADOOP_HOME=/app/soft/hadoop-3.3.1
    export PATH=$PATH:$HADOOP_HOME/bin: $HADOOP_HOME/sbin
    
  11. 复制文件

 scp -r hadoope root@node2:/usr/local/
  1. 格式化
```
格式化 hadoop 
首次启动需要格式化是进行文件系统的初始化操作,创建一些自己需要的文件
启动后,不在需要格式化
必须在主节点上(主机器)操作
hdfs namenode -format 或 hadoop namenode -format
```
一键启动
主机器操作许配置 slaves 和 ssh 免密登入
进入 hadoop 下 sbin 文件夹下 start-dfs.sh(sdfs 集群)和 start-yarn.sh(yarn 集群) 或者 start-all.sh(sdfs   和 yarn 集群同时启动)
//启动历史
mr-jobhistory-daemon.sh start historyserver 
启动时报错:
修改配置21和22
```
查看启动结果 jps 命令
13248 NameNode 
13345 DataNode 
13610 ResourceManager 
13757 Jps 
13711 NodeManager

提示 一下标识成功或者访问 ip:50070 页面
```
  1. 将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
```
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
```

web 页面: node1:9870 和 node1:8088
19. start-yarn.sh,stop-yarn.sh

```
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
```

20 . 如果启动后没有datenode节点要删除 core-site.xml中的路径在执行格式化
21. 通过浏览器http://ip:9870访问页面
22. java操作HDFS
```
//连接hdfs
configuration conf =new Configuration();
conf.set(fs.defaultFs,“hdfs://node-1:9000”)

//设置用户身份
方式1:System.setProperty("HADOOP_USER_NAME","root")
方式2:FileSystem fs=FileSystem.get(new URI("hdfs://node-1:9000"),conf,"root");
FileSystem fs=FileSystem.get(conf);
//操作
fs.xxxx()
fs.close()
---------------------------获取遍历文件--------
RemoteInterator<LocatedFIleStatus> list=fs.listFIles(path,true);
while(list.hasnext()){LocatedFIleStatus f=list.next()};
--------------------------上传文件流操作---------------------------------------------
FSDataOutputStream out=fs.create(new Path(文件),true);
FIleInputStream in=new FIleInputstream("D://文件");
IOUtils.copy(in, out  );
---------------------------------------------------------------------------------
```
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值