文档章节

大数据平台搭建 过程

柯里昂
 柯里昂
发布于 2017/02/13 19:10
字数 2837
阅读 71
收藏 3
master : 169.254.7.160
worker1 : 169.254.7.161
worker2 : 169.254.7.162
worker3 : 169.254.7.163
worker4 : 169.254.7.164
worker5 : 169.254.7.165

master: namenode,datanode,spark master,worker,hbase
worker1:datanode,worker,hbase
worker2:datanode,worker,hbase
worker3:datanode,worker,kafka,zk,hbase
worker4:datanode,worker,kafka,zk,hbase
worker5:datanode,worker,kafka,zk,hbase

ntpd 对时服务请见:http://acooly.iteye.com/blog/1993484

所用到的安装压缩包都在/home/setups 中 都可以在笔者的云盘中下载。

  • 前提:
  • 规划好hosts
  • ssh免密登录
  • java、scala安装并配置环境变量
# 解压hadoop安装包
tar zxvf /home/setups/hadoop-2.7.3.tar.gz -C /usr/local
# 将/usr/local/hadoop-2.7.3 加入 HADOOP_HOME环境变量
# $HADOOP_HOME/bin 和 $HADOOP_HOME/sbin 加入环境变量


# 修改 $HADOOP_HOME/etc/hadoop/core-site.xml
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/bigdata/hadoop/tmp</value>
</property>
# 修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh

export JAVA_HOME=java的环境变量

export HADOOP_HEAPSIZE=8192 # 8G
export HADOOP_NAMENODE_HEAPSIZE=4096  # 4G

export HADOOP_NAMENODE_OPTS="-Xms512m -Dcom.sun.management.jmxremote -D..."
export HADOOP_DATANODE_OPTS="-Xms512m -Dcom.sun.management.jmxremote -D..."

export HADOOP_LOG_DIR=/home/bigdata/hadoop/log

export HADOOP_PID_DIR=/home/bigdata/hadoop/pids

# 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<!-- dfs.datanode.max.xcievers -->
<property>
    <name>dfs.datanode.max.transfer.threads</name>
    <value>4096</value>
</property>

<!-- http://product.hubspot.com/blog/g1gc-tuning-your-hbase-cluster -->

<!-- http://www.cnblogs.com/liuming1992/p/4936655.html -->

<!-- https://community.hortonworks.com/content/supportkb/49619/hbase-settings-to-stop-major-compaction-during-pea.html -->
<property>
    <name>dfs.client.read.shortcircuit</name>
    <value>true</value>
</property>

<property>
    <name>dfs.domain.socket.path</name>
    <value>/var/run/hadoop-hdfs/dn._PORT</value>
</property>

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/bigdata/hadoop/hdfs/name</value>
</property>

<property>
    <name>dfs.datanode.handler.count</name>
    <value>64</value>
</property>

<property>
    <name>dfs.namenode.handler.count</name>
    <value>64</value>
</property>

<property>
    <name>dfs.datanode.name.dir</name>
    <value>/home/bigdata/hadoop/hdfs/data</value>
</property>

# 修改$HADOOP_HOME/etc/hadoop/mapred-env.sh

# export JAVA_HOME=java的环境变量
export HADOOP_MAPRED_LOG_DIR=/home/bigdata/hadoop/log
export HADOOP_MAPRED_PID_DIR=/home/bigdata/hadoop/pids

# 修改$HADOOP_HOME/etc/hadoop/slaves
master
worker1
worker2
worker3
worker4
worker5

# 修改$HADOOP_HOME/etc/hadoop/yarn-env.sh
# 在if中设置 JAVA_HOME=java的环境变量
# 在if中设置 YARN_LOG_DIR="/home/bigdata/hadoop/log"

# 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

# 将环境变量文件同步到各worker。
# 在各worker中 是环境变量生效
# 将/usr/local/hadoop-2.7.3 目录文件同步到其他worker中
# scp -r /usr/local/hadoop-2.7.3 worker1:/usr/local/ 
# ...
# 将配置的对应目录也同步下,本例的数据文件都配置在/home/bigdata/hadoop中了。
# scp -r /home/bigdata/hadoop worker1:/home/bigdata


# 在每个节点执行如下命令,以连接 libhadoop.so  到jre中
mkdir $JAVA_HOME/jre/amd64 && ln -s /usr/local/hadoop-2.7.3/lib/native/libhadoop.so $JAVA_HOME/jre/amd64/libhadoop.so

# 在每个节点执行如下命令
mkdir -p /var/run/hadoop-hdfs

# 在master中格式化hdfs
hdfs namenode -format
# 启动hdfs 
start-dfs.sh
# 确认master jps有 NameNode进程
# 浏览器访问master:50070 有界面展示出来,且展示的datanode个数和配置的一致。

# 启动yarn
start-yarn.sh
# 确认master jps有 ResourceManager进程
# 浏览器访问master:50070 有界面展示出来,且展示的datanode个数和配置的一致。

# 日志也很重要
mr-jobhistory-daemon.sh start historyserver

# hdfs 和 yarn就算安装成功了。
# 安装spark,其中spark-2.1.0-bin-hadoop2.7.tgz 存放在/home/setups 目录下
# 压缩包解压至/usr/local
tar zxvf /home/setups/spark-2.1.0-bin-hadoop2.7.tgz -C /usr/local

# 将spark-2.1.0-bin-hadoop2.7 加入 SPARK_HOME环境变量
# $SPARK_HOME/bin 加入环境变量并使环境变量生效


# 修改$SPARK_HOME/conf/slaves
master
worker1
worker2
worker3
worker4
worker5

# 复制spark默认配置模版,用来简化配置
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
# 配置开启日志输出
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/logs/spark/event_log/history

# 配置的目录需要在hdfs中创建下。
hdfs dfs -mkdir -p /logs/spark/event_log/history

# 复制spark默认配置模版,用来简化配置
cp spark-env.sh.template spark-env.sh

export SPARK_WORKER_DIR=/home/bigdata/spark/worker

export JAVA_HOME=java的环境变量
export SCALA_HOME=scala的环境变量

export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.3/etc/hadoop/
export SPARK_MASTER_IP=169.254.7.160

export SPARK_LOG_DIR=/home/bigdata/spark/logs

export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$HADOOP_HOME/lib/native  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native  
export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:$HADOOP_HOME/lib/native 

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://master:9000/logs/spark/event_log/history"

# 新建
# 将环境变量文件同步到各worker。
# 在各worker中 是环境变量生效
# 将/usr/local/spark-2.1.0-bin-hadoop2.7 目录文件同步到其他worker中
# scp -r /usr/local/spark-2.1.0-bin-hadoop2.7 worker1:/usr/local/ 
# ...
# 将配置的对应目录也同步下,本例的数据文件都配置在/home/bigdata/spark中了。
# scp -r /home/bigdata/spark worker1:/home/bigdata

# 启动spark
cd $SPARK_HOME && sbin/start-all.sh

# 也可以在各节点 启动slave
cd $SPARK_HOME/sbin && ./start-slave.sh -h master spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker1 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker2 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker3 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker4 spark://master:7077
cd $SPARK_HOME/sbin && ./start-slave.sh -h worker5 spark://master:7077

# 确认master jps有 Master 和 Worker 进程
# 浏览器访问master:8080 有界面展示出来,且展示的workers个数和配置的一致。

# 启动日志
cd $SPARK_HOME && sbin/start-history-server.sh

至此spark standalone模式安装完成。
# 按照规划,zookeeper是在worker3、worker4、worker5上,此处我们在worker3安装第一台

# 新建zookeeper的数据目录
mkdir -p /home/bigdata/zookeeper/data
# 准备zookeeper的日志目录
mkdir -p /home/bigdata/zookeeper/log

# 安装zookeeper
tar zxvf /home/setups/zookeeper-3.4.9.tar.gz -C /usr/local
cd /usr/local/zookeeper-3.4.9/conf
# 复制zookeeper默认配置模版,用来简化配置
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
dataDir=/home/bigdata/zookeeper/data
dataLogDir=/home/bigdata/zookeeper/log

server.3=worker3:2888:3888
server.4=worker4:2888:3888
server.5=worker5:2888:3888

# 同步zookeeper安装目录
scp -r /usr/local/zookeeper-3.4.9 worker4:/usr/local/
scp -r /usr/local/zookeeper-3.4.9 worker5:/usr/local/

# 同步zookeeper数据目录
scp -r /home/bigdata/zookeeper worker4:/home/bigdata/
scp -r /home/bigdata/zookeeper worker5:/home/bigdata/

# 登录worker3,修改worker3的myid
echo "3" >> /home/bigdata/zookeeper/data/myid

# 登录worker4,修改worker4的myid
echo "4" >> /home/bigdata/zookeeper/data/myid

# 登录worker5,修改worker5的myid
echo "5" >> /home/bigdata/zookeeper/data/myid

# 以上zookeeper安装步骤顺序不能打乱。

# 将ZOOKEEPER_HOME配置进环境变量

# 在worker3~worker5中启动zk
zkServer.sh start $ZOOKEEPER_HOME/conf/zoo.cfg

# 确认各节点的状态
zkServer.sh status
# 是leader或是follower 就OK


# zookeeper安装完毕
# 安装kafka

# 准备kafka日志目录
mkdir -p /home/bigdata/kafka/log/

# 解压安装包
tar zxvf /home/setups/kafka_2.11-0.10.1.0.tgz -C /usr/local/

cd /usr/local/kafka_2.11-0.10.1.0/config

# 修改配置文件server.properties 
vi server.properties

# 日志保存时间(小时)
log.retention.hours=720

# 和本次搭建无关,存做记录。内网按地址访问时不通时,配置这个参数
# listeners = PLAINTEXT://192.168.8.123:8689

log.dirs=/home/bigdata/kafka/log/ # 配置目录
# 使用外部的zk,上面已经搭建过了
zookeeper.connect=worker3:2181,worker4:2181,worker5:2181

# 日志刷新
log.flush.interval.messages=10000 # 每10000条记录溢出到磁盘
log.flush.interval.ms=1000 # 每秒溢出到磁盘

log.retention.bytes=10737418244 # 每个文件保留1G 

# 修改配置文件server.properties 完成

# 复制kafka到worker4和worker5
scp -r /usr/local/kafka_2.11-0.10.1.0 worker4:/usr/local/
scp -r /usr/local/kafka_2.11-0.10.1.0 worker5:/usr/local/

# 复制kafka 目录到worker4和worker5
scp -r /home/bigdata/kafka worker4:/home/bigdata
scp -r /home/bigdata/kafka worker5:/home/bigdata

# 修改worker3上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=3

# 修改worker4上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=4

# 修改worker5上的broker.id
vi /usr/local/kafka_2.11-0.10.1.0/config/server.properties
broker.id=5

# 将KAFKA_HOME配置进环境变量

# 在worker3~worker5上启动kafka
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

# 新建一个topic测试下
./kafka-topics.sh --create --zookeeper worker3:2181,worker3:2181 --replication-factor 2 --partitions 1 --topic
 test

# 安装hbase

# 准备hbase 日志目录
mkdir -p /home/bigdata/hbase/logs

# 解压缩hbase安装包
tar zxvf /home/setups/hbase-1.2.4-bin.tar.gz -C /usr/local/

cd /usr/local/hbase-1.2.4/conf

# 修改hbase-env.sh 
export JAVA_HOME=java的环境变量

# 取消jdk8中不在支持的jvm参数,主要是删除PermSize和MaxPermSize参数
# hbase g1 gc 的 博文:
# http://product.hubspot.com/blog/g1gc-tuning-your-hbase-cluster
export HBASE_MASTER_OPTS= 
export HBASE_REGIONSERVER_OPTS=

# 修改日志目录
export HBASE_LOG_DIR=/home/bigdata/hbase/logs

# 不使用hbase内置的zookeeper
export HBASE_MANAGES_ZK=false
# hbase-env.sh 修改 完毕

# 修改hbase-site.xml 
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:9000/hbase/data</value>
</property>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

<property>
    <name>hbase.zookeeper.quorum</name>
    <value>worker3:2181,worker4:2181,worker5:2181</value>
</property>

<property>
    <name>hbase.hstore.blockingStoreFiles</name>  
    <value>2100000000</value>  
</property>

<property>  
     <name>hbase.hregion.max.filesize</name>  
     <value>536870912000</value>  
 </property>

<property>  
    <name>hbase.hregion.majorcompaction</name>  
    <value>0</value>  
</property>

<!-- http://koven2049.iteye.com/blog/1006436 -->
<property>  
    <name>hbase.hregion.memstore.block.multiplier</name>  
    <value>8</value>//内存充足确保不会产生OOM的情况下,调大此值  
</property>  

<property>  
    <name>hbase.server.thread.wakefrequency</name>  
    <value>100</value>//减少睡眠等待时间,默认值为10000  
</property>  

<!-- 这一组说明非高峰时间段 -->
<!-- https://community.hortonworks.com/articles/52616/hbase-compaction-tuning-tips.html -->
<!-- https://community.hortonworks.com/content/supportkb/49619/hbase-settings-to-stop-major-compaction-during-pea.html -->
<property>  
    <name>hbase.offpeak.start.hour</name>  
    <value>2</value>
</property>  

<property>  
    <name>hbase.offpeak.end.hour</name>  
    <value>3</value>
</property>  


<!-- hbase.dfs.client.read.shortcircuit.buffer.size 短路缓冲大小 -->

# 修改 /usr/local/hbase-1.2.4/conf/regionservers 
# 理论上和 $HADOOP_HOME/etc/hadoop/slaves 文件内容一样
rm -f /usr/local/hbase-1.2.4/conf/regionservers && cp $HADOOP_HOME/etc/hadoop/slaves regionservers 

# 复制hbase 目录到worker1~worker5
scp -r /usr/local/hbase-1.2.4 worker1:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker2:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker3:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker4:/usr/local 
scp -r /usr/local/hbase-1.2.4 worker5:/usr/local 

# 复制hbase日志目录到worker1~worker5
scp -r /home/bigdata/hbase worker1:/home/bigdata/
scp -r /home/bigdata/hbase worker2:/home/bigdata/
scp -r /home/bigdata/hbase worker3:/home/bigdata/
scp -r /home/bigdata/hbase worker4:/home/bigdata/
scp -r /home/bigdata/hbase worker5:/home/bigdata/

# 设置 HBASE_HOME 环境变量,同步到worker1~worker5后。source /etc/profile使环境变量生效

# 启动hbase测试

start-hbase.sh

# 浏览器访问master:16010 有界面展示出来,且展示的server个数和配置的一致。

# hbase 巨量数据插入性能调整:
http://joshuasabrina.iteye.com/blog/1798239

# 安装 Hive2
# 解压压缩包
tar zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local/

# 设置 HIVE_HOME 环境变量
# 使环境变量生效。

# 在hdfs中创建 hive相应的目录并赋权
hdfs dfs -mkdir       /tmp
hdfs dfs -mkdir -p     /user/hive/warehouse
hdfs dfs -chmod g+w   /tmp
hdfs dfs -chmod g+w   /user/hive/warehouse

cd $HIVE_HOME/conf/
cp hive-log4j2.properties.template hive-log4j2.properties
# 修改 hive-log4j2.properties
vi hive-log4j2.properties
# 修改hive的日志输出目录
property.hive.log.dir=/home/bigdata/hive/logs
# 修改 hive-log4j2.properties 完成

cp hive-env.sh.template hive-env.sh
# 修改hive-env.sh
HADOOP_HOME=/usr/local/hadoop-2.7.3


# 修改hive-env.sh完成

cp hive-default.xml.template hive-site.xml
# 修改hive-site.xml,主要配置hive的metadata为mysql
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/apache_hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
        <value>这里填用户名</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>这里填密码</value>
    </property>

<!-- 将/tmp目录下的所有配置都改成/home/bigdata/hive下,这里不一一列出了 -->
# 将mysql-connector.jar 放入$HIVE_HOME/lib下
cp mysql-connector.jar $HIVE_HOME/lib/

# 初始化 hive元数据 ,保存至mysql,这一步一定要在 上面都完成之后做,笔者做的时候,没有设置hadoop_home,访问的fs.defaultFS是8020,郁闷了好久。
schematool -initSchema -dbType mysql

# 确认是否成功
hive 
# 能进入命令行即为成功。

# 后台启动
hiveserver2 start & 

# 安装zeppelin
tar zxvf zeppelin-0.7.0-bin-all.tgz -C /usr/local/

cd /usr/local/zeppelin-0.7.0-bin-all/conf/

# 从模版创建 环境配置
cp zeppelin-env.sh.template zeppelin-env.sh
# 编辑 zeppelin-env.sh
vi zeppelin-env.sh

export ZEPPELIN_LOG_DIR=/home/bigdata/zeppelin/logs
export ZEPPELIN_PID_DIR=/home/bigdata/zeppelin/pid
export ZEPPELIN_WAR_TEMPDIR=/home/bigdata/zeppelin/war
export ZEPPELIN_NOTEBOOK_DIR=/home/bigdata/zeppelin/notebook

export JAVA_HOME=
export MASTER=spark的master,如spark://master:7077
export HBASE_HOME=
export HBASE_CONF_DIR=

# 编辑 zeppelin-env.sh 完成

# 从模版创建 配置
cp zeppelin-site.xml.template zeppelin-site.xml
vi zeppelin-site.xml
<!-- 修改端口配置 -->
<property>
    <name>zeppelin.server.port</name>
    <value>7070</value>
</property>
# 将ZEPPELIN_HOME加入环境变量,并使生效

zeppelin-daemon.sh start # 启动
zeppelin-daemon.sh stop # 停止

# kudu 安装
# 使用rpm包安装
# rpm -ivh 各种包名,如:
# 先在 master 节点安装
rpm -ivh kudu-debuginfo-1.2.0+cdh5.10.0+0-1.cdh5.10.0.p0.56.el6.x86_64.rpm
一共有6个包。

# 新增目录
mkdir -p /home/kudu/master/log
mkdir -p /home/kudu/tserver/log
# 设置权限
chown -R kudu:kudu /home/kudu

# 配置目录
# master 配置设置,各节点相同
vi /etc/kudu/conf/master.gflagfile
 # 修改如下内容
--fs_wal_dir=/home/kudu/master/wal
--fs_data_dirs=/home/kudu/master/data
--default_num_replicas=1 //设置备份数 不设置默认为3
--master_addresses=master:7051 # 多个master用逗号分隔,在这里配置

vi /etc/default/kudu-master # 各节点都不同
export FLAGS_log_dir=/home/kudu/master/log
export FLAGS_rpc_bind_addresses=master:7051 # 这里只配自己的RPC端口
# master 配置设置完成

# tserver 配置设置 ,各节点相同
vi /etc/kudu/conf/tserver.gflagfile
# 修改如下内容
--fs_wal_dir=/home/kudu/tserver/wal
--fs_data_dirs=/home/kudu/tserver/data
--tserver_master_addrs=master:7051 # 绑定master节点	

vi etc/default/kudu-tserver # 各节点都不同
export FLAGS_log_dir=/home/kudu/tserver/log
export FLAGS_rpc_bind_addresses=master:7050 
# tserver 配置设置完成

# 启动  或  关闭 
service kudu-master start | stop
service kudu-tserver start | stop

# 启动后,可以在 master:8051中打开浏览器看到对应的web控制台。

© 著作权归作者所有

共有 人打赏支持
柯里昂
粉丝 24
博文 169
码字总数 81236
作品 0
徐汇
技术主管
梅灯银:我所亲历的制造业3年从10亿到150亿的增长传奇

他所服务的鲜易客户,是受到李克强总理赞扬的“四众”平台转型典范企业;他所服务的某锂电池企业,成为高端制造业服务化转型的典型代表,3年实现从10亿到150亿的增长传奇。他以“传统产业互联...

玄学酱
05/15
0
0
openstack和Hadoop区别

openstack是一个开源的云计算框架,而Hadoop是一个开源的大数据框架,二者的侧重点不同。 区别: 云计算是在云平台上提供存储和计算资源。 而以Hadoop为模型的大数据是提供了一种分布式的存储...

chenhao_asd
04/24
0
0
数据即金钱,中小企业如何搭建数据平台分得一杯羹?

作者介绍 数据量日益增长的今天,尤其是由IT信息时代向DT数据时代的转型期中,数据越来越凸显重要,数据的价值越来越高,也愈加被重视。很多公司都将数据作为企业的核心竞争力,企业的DNA。那...

战学超
2017/01/09
0
0
道阻且长,行则将至:搞科研,我们是认真的——数据院四周年系列报道之科研篇

知时而起,知难而进 在大约12平米的办公室里,数据院科学研究部首席架构师黎成权正在向韩亦舜院长汇报清华医学研究数据平台的建设进展:“目前参与合作的单位有5家,还有5家正在谈。”平台搭...

技术小能手
04/23
0
0
大数据发展火爆,云计算平台主打安全至上

随着互联网、云计算、移动通讯技术发展,数据越来越成为人们不可缺少的重要资产,对人们生活起着重要作用。 企业稳抓大数据是关键 作为信息时代下的产物,大数据,则是企业和互联网用户之间产...

数据大王帝
01/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
10分钟前
1
0
OpenCV图像处理实例:libuv+cvui显示摄像头视频

#include <iostream>#include <opencv2/opencv.hpp>#define CVUI_IMPLEMENTATION#include <cvui.h>extern "C"{#include <uv.h>}using namespace std;#define WINDOW_NAM......

IOTService
17分钟前
0
0
openJDK之JDK9的String

1.openJDK8的String 先来看下openJDK8的String的底层,如下图1.1所示: 图1.1 底层上使用的是char[],即char数组 每个char占16个bit,Character.SIZE的值是16。 2.openJDK9中的String 图2.1...

克虏伯
18分钟前
0
0
UEFI 模式下如何安装 Ubuntu 16.04

作者:知乎用户 链接:https://www.zhihu.com/question/52092661/answer/259583475 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 针对UEFI模式下安装U...

寻知者
19分钟前
0
0
20180925 df与du命令、fdisk磁盘分区

df 命令 disk filesystem的缩写,查看已挂载磁盘的总容量、使用容量、剩余容量信息。 [root@centos01 ~]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda3 27...

野雪球
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部