搭建hadoop

3. 搭建hadoop

3.1 安装JDK

参考:https://www.cnblogs.com/fushiyi/articles/15956398.html

3.2 设置免密

https://www.cnblogs.com/fushiyi/articles/15956398.html

3.3 下载hadoop包

百度云盘/常用下载/大数据组件/hadoop/xxx

或者镜像文件(d:/虚拟机实时计算镜像备份)中的/opt/hadoop/hadoop包

3.4 配置hadoop

参考:https://blog.csdn.net/qq_41946216/article/details/134345137

3.4.0 配置hadoop-env.sh

vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/hadoop-env.sh
## hadoop伪分布式配置

export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/java/jdk1.8.0_371

## hadoop集群配置(root指的是用户名)

export HADOOP_OS_TYPE=${HADOOP_OS_TYPE:-$(uname -s)}
export JAVA_HOME=/usr/java/jdk1.8.0_371

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root

3.4.1 配置core-site.xml

mkdir /usr/local/hadoop/data
vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/core-site.xml
<configuration>
    <!-- 指定HDFS中NameNode的地址 默认 9000端口-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
        <description>配置NameNode的URL</description>
    </property>

    
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/data</value>
    </property>
    
    ----- 暂时不加 -----

    分布式集群配置下面内容,伪分布式只需配置上面内容
    <!--配置所有节点的root用户都可作为代理用户-->
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>

    <!--配置root用户能够代理的用户组为任意组-->
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

    <!--配置root用户能够代理的用户为任意用户-->
    <property>
        <name>hadoop.proxyuser.root.users</name>
        <value>*</value>
    </property>
    
        ----- 暂时不加 -----
</configuration>

3.4.2 配置hdfs-site.xml

mkdir -p /usr/local/hadoop/dfs/name
mkdir -p /usr/local/hadoop/dfs/data
vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 数据的副本数量 --> 
    <property> 
        <name>dfs.replication</name> 
        <value>1</value>  
    </property> 
    <!-- nn web端访问地址 默认也是9870--> 
    <property> 
        <name>dfs.namenode.http-address</name> 
        <value>master:9870</value> 
    </property> 

    <!--设置权限为false-->
    <property>
        <name>dfs.permissions.enabled </name>
        <value>false</value>
    </property>

   <!--设置元数据存储目录-->
   <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:///usr/local/hadoop/dfs/name</value>
   </property>
   <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:///usr/local/hadoop/dfs/data</value>
  </property>


    <!--  集群配置使用 --> 

  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>worker01:9868</value>
  </property>  

</configuration>

3.4.3 配置yarn-site.xml

vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/yarn-site.xml
<configuration>

    <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序。--> 
    <property>    
        <name>yarn.nodemanager.aux-services</name>  
        <value>mapreduce_shuffle</value> 
    </property>


<!--  伪分布式以下无需配置 -->
<!-- Site specific YARN configuration properties -->
<!-- yarn集群主角色RM运行机器。--> 
    <property>    
        <name>yarn.resourcemanager.hostname</name>    
        <value>master</value>
    </property> 
 <!-- 每个容器请求的最小内存资源(以MB为单位)。-->
    <property>     
        <name>yarn.scheduler.minimum-allocation-mb</name> 
        <value>128</value> 
    </property> 
 <!-- 每个容器请求的最大内存资源(以MB为单位)。--> 
    <property>     
        <name>yarn.scheduler.maximum-allocation-mb</name> 
        <value>2048</value>
    </property>
    <!-- 容器虚拟内存与物理内存之间的比率。--> 
    <property>    
        <name>yarn.nodemanager.vmem-pmem-ratio</name>  
        <value>4</value> 
    </property>
    
    <!-- 关闭yarn内存检查 flink on hadoop 配置-->
    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>

    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

3.4.4 配置mapred-site.xml

vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/mapred-site.xml
<configuration>
    <!-- mr程序默认运行方式。yarn集群模式 local本地模式-->
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    
    <!--    以下配置为集群配置使用-->
    <!-- MR App Master环境变量。-->
    <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR MapTask环境变量。-->
    <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR ReduceTask环境变量。-->
    <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>

  <!-- 历史服务器端地址伪分布式和集群分布式都可以不配置 --> 
    <property> 
        <name>mapreduce.jobhistory.address</name> 
        <value>master:10020</value> 
    </property> 
    <!-- 历史服务器web端地址 --> 
    <property> 
        <name>mapreduce.jobhistory.webapp.address</name> 
        <value>master:19888</value> 
    </property> 
</configuration>

3.4.5 配置slaves

vim /opt/hadoop/hadoop-2.10.2/etc/hadoop/slaves
master
worker01
worker02

3.5 文件分发

## 这里只分发配置文件,如果之前没有解压包的,需要将hadoop整个文件夹分发
scp -r /opt/hadoop/hadoop-2.10.2/etc/hadoop root@worker01:/opt/hadoop/hadoop-2.10.2/etc/
scp -r /opt/hadoop/hadoop-2.10.2/etc/hadoop root@worker02:/opt/hadoop/hadoop-2.10.2/etc/

3.6 Hdfs格式化

cd /opt/hadoop/hadoop-2.10.2/
bin/hdfs  namenode  -format
cd /usr/local/hadoop/dfs/name

image-20240418085229629

image-20240418085550704

3.7 启动Hadoop集群

3.7.1 启动HDFS

cd /opt/hadoop/hadoop-2.10.2/sbin
./start-dfs.sh

image-20240418100654468

image-20240418100720695

3.7.2 启动Yarn

./start-yarn.sh

## 也可使用./start-all 同时启动hdfs和yarn

image-20240418100746665

image-20240418100822947

image-20240418100838523

3.8 常用命令

3.8.1 hdfs常用命令

hdfs dfs -ls / # 查看文件目录
hdfs dfs -cat /hbase/hbase.id   # 查看文件
hdfs dfs -put  test1 test ## 上传test1文件
hdfs dfs -get test test1 ## 下载test文件
hdfs dfs -rm out ## 删除文件
hdfs dfs -mkdir /user/hadoop/examples 建立目录

3.8.2 hbase常用命令

status ## 查看服务器状态
version ## 查看服务器状态

--表操作
list ## 查看所有表
create 'Student', 'baseInfo','schoolInfo' ## 创建表
desc '表名' ## 查看表的基本信息
disable 'Student' ## 禁用表
is_disabled 'Student' ## 检查表是否被禁用
enable 'Student' # 启用表
is_enabled 'Student' ## 检查表是否被启用
exists 'Student' ## 检查表是否存在
disable 'Student'  ## 删除表前需要先禁用表
drop 'Student'   ## 删除表

---增删改
alter 'Student', 'teacherInfo'  ## 添加列族
put 'Student', 'rowkey1','baseInfo:name','tom'  ## 添加列,name即为列,再插入数据时添加
alter 'Student', {NAME => 'teacherInfo', METHOD => 'delete'}  ## 删除列族
alter 'Student',{NAME=>'baseInfo',VERSIONS=>3} ## 更改列族存储版本的限制
--## 插入数据
put 'Student', 'rowkey1','baseInfo:name','tom'  ## name即为列,再插入数据时添加
put 'Student', 'rowkey1','baseInfo:birthday','1990-01-09'
put 'Student', 'rowkey1','baseInfo:age','29'
put 'Student', 'rowkey1','schoolInfo:name','Havard'
put 'Student', 'rowkey1','schoolInfo:localtion','Boston'
put 'Student', 'rowkey2','baseInfo:name','jack'
put 'Student', 'rowkey2','baseInfo:birthday','1998-08-22'
put 'Student', 'rowkey2','baseInfo:age','21'
put 'Student', 'rowkey2','schoolInfo:name','yale'
put 'Student', 'rowkey2','schoolInfo:localtion','New Haven'
put 'Student', 'rowkey3','baseInfo:name','maike'
put 'Student', 'rowkey3','baseInfo:birthday','1995-01-22'
put 'Student', 'rowkey3','baseInfo:age','24'
put 'Student', 'rowkey3','schoolInfo:name','yale'
put 'Student', 'rowkey3','schoolInfo:localtion','New Haven'
put 'Student', 'fubo01','baseInfo:name','maike-jack'  
--
get 'Student','rowkey3' # 获取指定行中所有列的数据信息
get 'Student','rowkey3','baseInfo' # 获取指定行中指定列族下所有列的数据信息
get 'Student','rowkey3','baseInfo:name' # 获取指定行中指定列的数据信息
delete 'Student','rowkey3' # 删除指定行 
delete 'Student','rowkey3','baseInfo:name' # 删除指定行中指定列的数据

---查询
get 'Student','rowkey3'# 获取指定行中所有列的数据信息
get 'Student','rowkey3','baseInfo'# 获取指定行中指定列族下所有列的数据信息
get 'Student','rowkey3','baseInfo:name' # 获取指定行中指定列的数据信息
scan 'Student' # 查询整表数据
scan 'Student', {COLUMN=>'baseInfo'} ## 查询指定列簇的数据
---# 查询指定列的数据
scan 'Student', {COLUMNS=> 'baseInfo:birthday'} 
scan 'Student', {COLUMNS=> 'baseInfo:name',STARTROW => 'fubo01',STOPROW => 'rowkey2',LIMIT=>2, VERSIONS=>3}
---## 条件过滤
scan 'Student', FILTER=>"ValueFilter(=,'binary:24')" 
scan 'Student', FILTER=>"ValueFilter(=,'substring:yale')"
scan 'Student', FILTER=>"ColumnPrefixFilter('birth')"
scan 'Student', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter ValueFilter(=,'substring:1998')" # 列名中的前缀为birth且列值中包含1998的数据

image-20230628164848999

image-20240418121931654

posted @ 2024-04-18 10:13  付十一。  阅读(10)  评论(0)    收藏  举报