F嘉阳 - hadoop
type: channel
link: https://blog.fjy8018.top/index.php/tag/hadoop/
items: HBase伪分布式安装
items: HBase 学习笔记
items: hadoop分布式搭建的一些坑
items: Hadoop分布式搭建测试
items: MapReduce对网站日志进行分析
items: 单节点MapReduce开发
items: YARN单节点伪分布式搭建
items: HDFS伪分布式单节点搭建

HBase伪分布式安装
type: item
date: 2018-12-15T19:18:00+08:00
description: Hadoop伪分布式安装 基础环境 Hadoop：版本2.7.3，下载地址 HBase：版本1.2.4，下载地址 JDK8 jdk 安装命令 $ yum -y install java-devel java 查看当前系统jre和jdk路径，输入update-alternatives --config java和update-alternatives --config javac $ update-alternatives --config java 共有 1 个提供“java”的程序。 选项 命令 ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java) $ update-alternatives --config javac 共有 1 个提供“javac”的程序。 选项 命令 ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin/javac) 查看环境 $ ll 总用量 311132 -rw-------. 1 root root 1241 8月 11 10:53 anaconda-ks.cfg -rw-r--r--. 1 root root 214092195 8月 26 2016 hadoop-2.7.3.tar.gz -rw-r--r--. 1 root root 104497899 10月 26 2016 hbase-1.2.4-bin.tar.gz $ java -version openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) $ javac -version javac 1.8.0_191 免密登录 新建hadoop用户，忽略密码强度提示 $ adduser hadoop $ passwd hadoop 为方便远程连接和学习，同时授予root权限，输入whereis sudoers查看权限控制文件位置 $ whereis sudoers sudoers: /etc/sudoers /etc/sudoers.d /usr/libexec/sudoers.so /usr/share/man/man5/sudoers.5.gz vi /etc/sudoers修改内容为 root ALL=(ALL) ALL hadoop ALL=(ALL) ALL 切换至hadoop用户，使用 ssh-keygen -t rsa生成私钥信息，位置在/home/hadoop/，并且忽略所有提示输入的信息 查看生成的文件，该SSH文件夹为隐藏文件夹，故用ls -a查看，可见自动生成了.ssh目录和id_rsa,id_rsa.pub两个文件 $ ls /home/hadoop/.ssh/ id_rsa id_rsa.pub 复制公钥到.ssh目录 $ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 免密测试 $ ssh localhost The authenticity of host 'localhost (::1)' can't be established. ECDSA key fingerprint is SHA256:3UEr3lx2jznmN3FL3SflViR05IZe6AWweb3TeSsfX0M. ECDSA key fingerprint is MD5:0f:31:c1:cc:54:69:7f:d8:8d:7c:8c:22:95:2e:03:4e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. Last login: Sat Dec 15 11:14:27 2018 $ exit 登出 Connection to localhost closed. 安装Hadoop 解…

HBase 学习笔记
type: item
date: 2018-12-15T12:06:00+08:00
description: 概述 HBase 简介 Hbase是一个分布式的、面向列的开源数据库 列式数据库：将列值统一存储 行式数据库：关系型数据库，将每一行值统一存储 Hbase在Hadoop之上提供了类似于Bigtable的能力 Bigtable是压缩、高性能、高可扩展性的基于Google GFS文件系统的数据库，用于存储大规模的结构化数据，在扩展性和性能上有很大的优势 Hbase不同于一般的关系数据库，它适合非结构化数据存储 非结构化数据：不能用二维表进行存储的数据，例如图片、文档等 Hbase地位 Apache基金会顶级项目 基于Hadoop核心HDFS系统进行数据存储，类似于Hive 可以存储超大数据并适合用来进行大数据的的实时查询 Hbase与HDFS Hbase建立在Hadoop文件系统上，利用了Hadoop文件系统的容错能力 Hbase提供对数据随机实时读/写访问功能 Hbase内部使用哈希表存储索引，可将HDFS文件中的数据进行快速查找 适用场景 瞬间写入量很大，常用数据库不好支持或者需要很高的成本支撑 数据需要长久保存，且数据量会持久增长到比较大的场景 Hbase不适合用于有join、多级索引、表关系复杂的数据模型 存储模型与原理 CAP定理 分布式系统的CAP理论：理论首先把分布式系统中的三个特性进行了如下归纳： 一致性（C）：所有节点在同一时间具有相同的数据 可用性（A）：保证每个请求不管成功或者失败（包含节点宕机）都有响应，但不保证获取数据的正确性 分区容错性（P）：系统中任意信息的丢失或失败不会影响系统的继续运作。系统如果不能在时限内达成数据一致性，必须就当前操作在C和A之间做出选择。 Hbase为CP特性 ACID ACID的定义： Atomic原子性:所有的步骤要么全部完成要么一个也不会完成 Consistent一致性: 通过各种途径包括外键约束等任何写入数据库的数据都是有效的，不能发生表与表之间存在外键约束 Isolated隔离性: 一个未完成事务不会影响另外一个未完成事务 Durable持久性: 一旦一个事务被提交，它应该持久保存 HBase非强ACID HBase概念 字段 概念 备注 NameSpace 类似RDBMS的“数据库” Table 表名必须是能用在文件路径里的合法名字 原因：每个表都会映射为HDFS的文件 Row 在表里，每一行代表一个数据对象，每一行都以一个行键（Row Key）来唯一标识的，行键没有特定的数据类型，以二进制的字节进行存储 Row Key 唯一标识一行记录，不可改变，只能删除 Column 由Column family和Column qualifier组成，由（：）进行分隔 例如：family：qualifier Column family 在定义HBase表的时候需要提前设置好列族，表中所有的列都需要组织在列族里面 同一个列族的成员有相同的前缀，物理上，一个列族的成员都是储存在一起，用于存储优化 Column qualifier（列限定符） 列族中的数据通过列标识来进行映射，可以理解为一个键值对，Column qualifier就是Key 类似具体的列名 Cell 每一个行键，列族和列标识共同组成的一个单元 无特定的数据类型，以二进制字节存储 Timestamp 每个值都有一个Timestamp，作为该值特定版本的标识符 读未指定版本则返回最新版，写未指定时间则使用当前时间，HBase默认保留3个版本数据 HBase与传统关系数据库的区别 Hbase RDBMS 数据库大小 PB GB、TB 数据类型 Bytes 丰富的数据类型 事务支持 ACID只支持单个Row级别 全面的ACID支持 索引 只支持Row-Key 支持 吞吐量 百万查询/每秒 数千查询/每秒 HBase基础架构 HBase分布式系统简介 HMaster HBase主/从集群架构中的中央节点 负责将region（HBase中存储最小单元，表格的基本单位）分配给RegionServer，协调RegionServer的负载并维护集群状态 维护表和Region的元数据，不参与数据的输入/输出过程 RegionServer 维护HMaster分配给他的region，处理对这些region的IO请求 负责切分正在运行过程中变得过大的region Zookeeper 集群协调器，保证至少一个节点出于active状态 HMaster启动将系统表加载到ZK（用于服务发现） 提供HBase RegionServer状态信息 HBase原理 HBase写流程 Client先访问zookeeper，得到对应的RegionServer地址 Client对RegionServer发起写请求，RegionServer接受数据写入内存 当Mem…

hadoop分布式搭建的一些坑
type: item
date: 2018-04-22T10:39:00+08:00
description: DataNode没启动 这种情况多出现于该机器之前配置过hadoop，没清理干净的情况，即仍有文件目录，导致新hadoop的clusterID与旧的不一致，导致HDFS无法启动，报JavaIO异常 2018-04-22 00:21:15,868 WARN org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs in /www/hadoop/app/tmp/dfs/data: namenode clusterID = CID-6c7766c6-b260-42b6-8c03-07dda802c0cf; datanode clusterID = CID-a53df7ad-e593-4a29-ad15-a93486c54776 2018-04-22 00:21:15,868 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool (Datanode Uuid unassigned) service to hadoop0/192.168.79.129:8020. Exiting. java.io.IOException: All specified directories are failed to load. at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478) at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1394) at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1355) at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:228) at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:829) at java.lang.Thread.run(Thread.java:745) 2018-04-22 00:21:15,869 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool (Datanode Uuid unassigned) service to hadoop0/192.168.79.129:8020 解决方案 清理所有节点的旧文件存储目录，重新再根节点格式化存储空间 rm -rf app/ hdfs namenode -format 重新启动HDFS [hadoop@hadoop0 bin]$ cd ../sbin [hadoop@hadoop0 sbin]$ ./start-all.sh 查看进程，DataNode已启动 [hadoop@hadoop0 sbin]$ jps 37618 DataNode 37783 SecondaryNameNode 37932 ResourceManager 37485 NameNode 38045 NodeManager 38365 Jps NodeManager没启动/启动后进程消失 该情况由于yarn-site.xml文件配置有误，导致从节点找不到主节点，报JavaNet异常 org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [hadoop0:0] java.net.BindException: 无法指定被请求的地址; For more details see: http://wiki.apache.org/hadoop/BindE…

Hadoop分布式搭建测试
type: item
date: 2018-04-21T18:10:00+08:00
description: 搭建环境 Windows VM虚拟机 虚拟机配置 CPU:7700 单核 RAM:2G SSD:20G OS:CentOS 7.4 环境配置 修改主机名 因为三台虚拟机均为一台虚拟机克隆而成，且源主机名为localhost，先计划将三台主机分别设置为hadoop0，hadoop1，hadoop2 IP、主机名、职能分别为： 192.168.79.129 hadoop0 NameNode DataNode ResourceManager NodeManager 192.168.79.130 hadoop1 DataNode NodeManager 192.168.79.131 hadoop2 DataNode NodeManager CentOS 7使用hostnamectl set-hostname hadoop0设置主机名，其他几台同样操作，输入后可通过hostnamectl status查看是否修改成功 [root@hadoop0 ~]# hostnamectl status Static hostname: hadoop0 Icon name: computer-vm Chassis: vm Machine ID: 4eddbba909c84e159cfa474604412c3c Boot ID: df37e835fde94d039153028c9479b68e Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-693.el7.x86_64 Architecture: x86-64 由于hadoop0是根节点，用于资源调度，故其需要具有所有DataNode的访问地址和权限，进入/etc/hosts文件，添加如下内容将主机名解析到对应的IP 192.168.79.129 hadoop0 192.168.79.130 hadoop1 192.168.79.131 hadoop2 SSH免密码登录 进入当前用户的根目录/home/hadoop/.ssh/，在该目录下执行ssh-keygen -t rsa生成主机公钥，过程中弹出的除了 Overwrite (y/n)? y选择y确认覆盖之外，其余全为空值，则可生成免密码登录的公钥 【注意】Ubuntu系统操作略有特殊，建议使用CentOS系统进行操作 [hadoop@hadoop0 root]$ cd /home/hadoop/.ssh/ [hadoop@hadoop0 .ssh]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): /home/hadoop/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hadoop/.ssh/id_rsa. Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub. The key fingerprint is: SHA256:RjyGCGedx9xzxXG97KGgjXMIZ/pg7Q+tLU1nJoxIhm8 hadoop@hadoop0 The key's randomart image is: +---[RSA 2048]----+ | . o. + . oo.o| | + .oo+ o . ...| | . o.= o . .| | . * + . + | | + S B . o .| | E B.* = . | | o +.=.= | | ++. | | .oo | +----[SHA256]-----+ 使用ssh-copy-id将本地主机的公钥复制到远程主机的authorized_keys文件上，此时先对本地主机hadoop0授权 [hadoop@hadoop0 .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop0 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/hadoop/.…

MapReduce对网站日志进行分析
type: item
date: 2018-04-20T22:58:00+08:00
description: 代码 GitHub链接 开源工具类UserAgentParser地址 日志来源 根据之前的作业提交系统项目的后台获取，为了本地测试，故先从数据库中备份下来并做了适当的处理，仅保留UserAgent的相关信息 本地文件测试 使用开源工具类解析UserAgent中的信息 @Test public void testReadFile() throws Exception { String path = "F:\\JAVA Workspace\\hadoopstudy\\access.log"; BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File(path)))); String line = ""; int count = 0; //模拟MapReduce存储 Map browerMap = new HashMap(); UserAgentParser userAgentParser = new UserAgentParser(); while (line != null) { line = reader.readLine(); count++; if (StringUtils.isNotBlank(line)) { String source = line; UserAgent agent = userAgentParser.parse(source); //测试 String browser = agent.getBrowser(); String engine = agent.getEngine(); String engineVersion = agent.getEngineVersion(); String os = agent.getOs(); String platform = agent.getPlatform(); boolean mobile = agent.isMobile(); Integer browserValue = browerMap.get(browser); if (browserValue != null) { browerMap.put(browser, browerMap.get(browser) + 1); } else { browerMap.put(browser, 1); } //输出解析的信息 System.out.println(browser + "," + engine + "," + engineVersion + "," + os + "," + platform + "," + mobile); } } System.out.println("总记录数：" + count); System.out.println("===================================="); for (Map.Entryentry :browerMap.entrySet()){ System.out.println(entry.getKey()+":"+entry.getValue()); } } 执行单元测试 使用MapReduce统计 代码以WordCount为原型，结合本地测试的代码编写 ... boolean mobile = agent.isMobile(); if (mobile){ mobileuser = "手机用户"; }else { mobileuser = "非手机用户"; } //通过上下文把map的处理结果输出 context.write(new Text(browser), one); ... 打包运行 将工程用mvn assembly:assembly命令把插件一起打包，上传至虚拟机，同时将log上传至HDFS的根目录 [hadoop@localhost testFile]$ hadoop fs -put access.log / 18/04/11 06:12:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable [hadoop@localhost testFile]$ hadoop fs -ls / 18/04/11 06:12:21 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor…

单节点MapReduce开发
type: item
date: 2018-04-17T13:03:00+08:00
description: 官方原理解析 MapReduce演进 MapReduce2.x的架构 MapReduce1.x的架构，一旦JobTracker挂了，整个分布式节点就崩溃了，因此被淘汰 开发WordCount WordCount原理 数据输入到MapReduce，每个MapReduce任务都被初始化为一个Job，每个Job又可以分为两种阶段：map阶段和reduce阶段。map方法接收一个形式的输入，key表示词组偏移量，value表示该偏移量对应的值，然后同样产生一个形式的中间输出，Hadoop函数接收一个如形式的输入，list of values即Java中的集合，用于表示相同偏移量下的字符统计数量，然后对这个value集合进行处理，每个Reduce方法产生0或1个输出，reduce的输出也是形式的。 如果文本为 Hadoop Hello Hadoop 实际过程大概为： Mapping： ，， Shuffling： ， Reducing： 多节点下的并行计算原理示意图 开发代码 查看源码 通过查看Mapper类的源码，发现官方已经定义的run方法，包含了所有基础的Mapper操作（模板方法设计模式），主要操作在map中，因此，只要重写map方法即可。 同理Reduce类中也有类似的定义 重写方法 这里只列举部分代码，其余所有代码可去本人的GitHub中查看：GitHub链接 /** * Map：读取输入文件 * Text:类似字符串 */ public static class MyMapper extends Mapper { LongWritable one = new LongWritable(1); /** * @param key 偏移量 * @param value 每行的字符串 * @param context 上下文 * @throws IOException * @throws InterruptedException */ @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { /*super.map(key, value, context);*/ //接收到每一行数据 String line = value.toString(); //按照指定分隔符进行拆分 /*line.split("\t");//以Tab分隔*/ String[] words = line.split(" ");//以空格分隔 for (String word : words) { //通过上下文把map的处理结果输出 context.write(new Text(word), one); } } } 运行 通过宝塔面板上传到服务器，确保此时Hadoop所有服务均为启动状态 在HDFS中预先创建好要测试的文件，通过绝对路径的方法hadoop fs -ls hdfs://192.168.79.129:8020/确认文件是可以访问的 输入运行命令即可运行 hadoop jar hadoopstudy-1.0-SNAPSHOT.jar com.fjy.hadoop.mapreduce.WordCountApp hdfs://192.168.79.129:8020/hello.txt hdfs://192.168.79.129:8020/output/wc 启动至FileInputFormat [hadoop@localhost testFile]$ hadoop jar hadoopstudy-1.0-SNAPSHOT.jar com.fjy.hadoop.mapreduce.WordCountA2.168.79.129:8020/hello.txt hdfs://192.168.79.129:8020/output/wc 18/04/10 09:57:43 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 18/04/10 09:57:44 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 18/04/10 09:57:45 WARN mapreduce.JobResourceUploader: Hadoop command-line option parsing not perfo…

YARN单节点伪分布式搭建
type: item
date: 2018-04-09T20:14:00+08:00
description: 配置YARN 首先启动之前配置好的HDFS服务，然后进入/www/hadoop/hadoop-2.6.0-cdh5.7.0/etc/hadoop目录，按照官方指导配置YARN单节点环境 使用cp mapred-site.xml.template mapred-site.xml命令把mapred-site.xml.template复制一份，加入官方的配置 mapreduce.framework.name yarn 同时对yarn-site.xml也进行配置 yarn.nodemanager.aux-services mapreduce_shuffle 启动YARN 进入/www/hadoop/hadoop-2.6.0-cdh5.7.0/sbin目录，使用./start-yarn.sh命令启动YARN服务 [hadoop@localhost sbin]$ ./start-yarn.sh starting yarn daemons starting resourcemanager, logging to /www/hadoop/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-resourcemanager-localhost.localdomain.out localhost: starting nodemanager, logging to /www/hadoop/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-nodemanager-localhost.localdomain.out 用jps命令查看是否启动成功，看到如下显示即为启动成功，主要是NodeManager和ResourceManager两个服务 [hadoop@localhost sbin]$ jps 7056 SecondaryNameNode 7475 NodeManager 6775 NameNode 6872 DataNode 7374 ResourceManager 7679 Jps 开放端口 YARN的浏览器客户端占用8088端口，故使用宝塔面板开放8088端口 访问YARN图形化界面 使用浏览器打开http://ip:8088/可见如下界面，则YARN启动成功 测试 YARN官方提供了示例java程序来测试资源调度，进入/www/hadoop/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce目录，可见 [hadoop@localhost mapreduce]$ ls hadoop-mapreduce-client-app-2.6.0-cdh5.7.0.jar hadoop-mapreduce-client-nativetask-2.6.0-cdh5.7.0.jar hadoop-mapreduce-client-common-2.6.0-cdh5.7.0.jar hadoop-mapreduce-client-shuffle-2.6.0-cdh5.7.0.jar hadoop-mapreduce-client-core-2.6.0-cdh5.7.0.jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar hadoop-mapreduce-client-hs-2.6.0-cdh5.7.0.jar lib hadoop-mapreduce-client-hs-plugins-2.6.0-cdh5.7.0.jar lib-examples hadoop-mapreduce-client-jobclient-2.6.0-cdh5.7.0.jar sources hadoop-mapreduce-client-jobclient-2.6.0-cdh5.7.0-tests.jar 其中hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar就是MapReduce的测试程序，通过hadoop jar的方式来运行 用命令查看可配置的参数hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar [hadoop@localhost mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar An example program must be given as the first argument. Valid program names are: aggregatewordcount: An Aggregate based map/reduce program that …

HDFS伪分布式单节点搭建
type: item
date: 2018-04-07T13:01:00+08:00
description: 环境 系统：CentOS Linux 7.4.1708 (Core) 客户端：putty 服务器：虚拟机1core、2G RAM 同时搭建了宝塔面板（自动配置了java8） Hadoop下载 CDH版本Hadoop下载 为了统一版本，全部使用hadoop-2.6.0-cdh5.7.0 点击可进入官方推荐配置页 解压并配置 将下载好的文件通过宝塔上传到服务器，这里选择上传到/www/hadoop目录 解压tar包 配置 新建用户 新建hadoop用户，忽略密码强度提示 adduser hadoop passwd hadoop 为方便远程连接和学习，同时授予root权限，输入whereis sudoers查看权限控制文件位置 [root@fjy ~]# whereis sudoers sudoers: /etc/sudoers /etc/sudoers.d /usr/libexec/sudoers.so /usr/share/man/man5/sudoers.5.gz 使用宝塔找到并修改/etc/sudoers文件 配置新用户免密码远程登录 切换至hadoop用户，使用 ssh-keygen -t rsa生成私钥信息，位置在/home/hadoop/，并且忽略所有提示输入的信息 查看生成的文件，该SSH文件夹为隐藏文件夹，故用ls -a查看，可见自动生成了.ssh目录和id_rsa,id_rsa.pub两个文件 复制公钥到.ssh目录 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 查看JAVA目录 因为是宝塔自动配置的java8，所以要首先查看当前java环境变量位置，使用如下命令 update-alternatives --config java 此时宝塔自动将java配置到/usr/java/jdk1.8.0_121/jre/bin/java目录 即/usr/java/jdk1.8.0_121为java环境变量的目录 配置hadoop的java目录 使用宝塔进入hadoop目录下的etc/hadoop/hadoop-env.sh，对应此处的绝对路径应为/www/hadoop/hadoop-2.6.0-cdh5.7.0/etc/hadoop 使用宝塔编辑文件，加入java环境变量位置 配置分布式文件参数 打开core-site.xml，配置如下 fs.defaultFS hdfs://192.168.79.129:8020 hadoop.tmp.dir /www/hadoop/tmp 打开hdfs-site.xml，配置如下 dfs.replication 1 启动 初始化 进入/www/hadoop/hadoop-2.6.0-cdh5.7.0/bin目录，使用如下语句初始化Hadoop，该操作仅执行一次即可，以后使用无需重复执行，否则执行后会删除当前hadoop上的所有文件 hadoop namenode -format 滚动均为info级别的日志 可看到已初始化成功 启动HDFS 切换到hadoop用户，进入/www/hadoop/hadoop-2.6.0-cdh5.7.0/sbin目录 输入./start-dfs.sh启动HDFS服务 【注意】，要提前在root用户下对/www/hadoop授予hadoop用户读写权限，否则无法启动 使用jps查看当前的java进程，若出现如下四个进程表示HDFS服务启动成功 外部访问浏览器客户端 首先使用宝塔开放50070端口 使用外部浏览器访问ip:50070可查看如下页面，则表示HDFS已成功启动 hdfs命令 配置hdfs命令 使用vi ~/.bash_profile进入配置文件，按如下配置 export HADOOP_HOME=/www/hadoop/hadoop-2.6.0-cdh5.7.0 export PATH=$HADOOP_HOME/bin:$PATH 使配置文件生效source ~/.bash_profile 输入hdfs回车测试命令是否生效，若出现如下画面则表示命令已经生效 命令测试 先在本地创建hello.txt文件，使用 hadoop fs -put hello.txt /命令将文件推送到hdfs根目录下 查看服务器根目录hadoop fs -ls /，已经有该文件，hadoop伪分布式配置完成